Error handling using `Deferred`
<p><code>Deferred</code> objects have two main pools of callbacks, namely <code>doneCallbacks</code> and <code>failCallbacks</code>. Both pools are "linear": the callbacks are stored one after the other in the order they were given in.</p>

<p>This linear structure seems to go against the "tree-like" structure one has to consider when  handling errors. At every step, there are two cases: fail and pass.</p>

<pre><code>if(err) {
     // stuff
     if(err) {
          // stuff
     } else {
          // stuff
     }
else {
     // stuff
     if(err) {
          // stuff
     } else {
          // stuff
     }
}
</code></pre>

<p>It seems that because of the imposed linearity of <code>Deferred</code>s, they are not very suited for error handling. Am I overlooking something?</p>
