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 !== promise2 is 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:
onFulfilled or onRejected returns a thenable, including the details of the resolution procedure;onRejected must be the thrown exception in the case where a handler throws;onFulfilled and onRejected must be called asynchronously;onFulfilled and onRejected must be called as functions;onFulfilled and onRejected for subsequent calls to then on the same promise.