Promises/A+ is based on the concepts and
then API presented in the CommonJS Promises/A proposal. However, it differs from Promises/A in several important ways.
The following parts of Promises/A have been intentionally omitted:
promise1 !== promise2is not a requirement for
var promise2 = promise1.then(onFulfilled, onRejected).
Promises/A+ uses different terminology from Promises/A, reflecting what has become the de facto vocabulary among promise implementations. Specifically:
Promises/A+ additionally specifies:
onRejectedreturns a thenable, including the details of the resolution procedure;
onRejectedmust be the thrown exception in the case where a handler throws;
onRejectedmust be called asynchronously;
onRejectedmust be called as functions;
onRejectedfor subsequent calls to
thenon the same promise.