title: Why are exceptions used for rejecting promises in JS?
body: <p>The specification I'm referring to is at <a href="http://promises-aplus.github.io/promises-spec/" rel="noreferrer">http://promises-aplus.github.io/promises-spec/</a>. </p>
  
  <p>When using <code>then()</code>, you can either return a promise, and reject the promise when you desire, or you can throw an exception to reject a promise. </p>
  
  <p>Why wasn't the api designed in such a fashion where for the <code>then</code> function, it is passed a resolve and reject function like the original promise constructor? </p>
  
  <p>Exceptions are heavy in many languages (and I assume in javascript too) so it seems odd they are using them as a choice for flow control. Creating a whole new promise object and returning it, just to reject it, adds to code bloat IMO. Debugging becomes harder too in case of an exception is thrown (such as syntax errors, or if function is being called on a undefined object, etc.)</p>