 <p>I'm a huge fan of <a href="https://github.com/caolan/async" rel="nofollow">Caolan's async library</a>. The big idea with said library is that the first argument of every callback is an error, and if no error is present, the next function in the chain is called. So your could could look like this:</p> <pre><code>vote = (res, data) -&gt; async.series [ (next) -&gt; Case.findOne { caseId: data.id }, next (next) -&gt; myvote = new Vote({case: mycase_id}).save(next) ], (err, result) -&gt; if err console.error err else console.log "Success!" </code></pre> <p>The chain of functions breaks on the first error thrown, that way your final callback is really only responsible for handling a single error. This is great for serial processes where you want to halt and report the first issue you run into.</p>