Why not just inline `emitFailedMessage` and `emitPendingMessage` ?
We could structure `reap` as:
```js
function reap() {
  // Promise that pending messages are reaped
  var reapedPending = Tasks.findAndUpdatePending().
    ....// everything from reapPending and emitPendingMessage

  // Promise that failed messages are reaped
  var reapedFailed = Tasks.findAndUpdateFailed().
    ... // everything from reapFailed and emitFailedMessage

  // Return promise that all is done 
  return Promise.all(reapedPending, reapedFailed)
};
```

This way we use promises to keep semantical flow in sync with syntactic flow.