This is my when.reduce code
                return reduce(cmds, function(responses, cmd) {
                    return processor(cmd).then(function(response) {
                        responses.push(response); // or whatever
                        return responses;
                    })
                }, [])
any rejection in processor or lower gets hung (unhandled) at when.reduce(node:7520) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): manual rejection in processor
**Command Processing Errors**
 manual rejection in processor
uCOMmandIt > (node:7520) PromiseRejectionHandledWarning: Promise rejection was handled asynchronously (rejection id: 2)
FINAL response back [ 'manual resolution in processor' ]
to make sure it is when reduce I substituted this 
return processor(cmds[0]);
and yes both resolutions and rejections bubble on through.
Is there an error  in my construction of the reducer function or is this a bug?Note I am using the latest version of nodejs 6.9.1 which since 6.0 now throws these warnings for any unhandled rejections