I never wrapped my mind around the Promises API, but I have always async/await is much easier to grasp in any language
waitForPromise()
.then(handleResolve)
.fail(handleReject)
.catch(handleException);
But actually looks like this: waitForPromise()
.then(handleResolve, handleReject)
.catch(handleException); waitForPromise()
.then(handleResolve)
.catch(handleReject)
.catch(handleException);
With the exception that if `handleResolve` also throws then that will be picked up by `handleReject`, whereas in `waitForPromise().then(handleResolve, handleReject).catch(handleException)` it won’t.As initially I thought catch() is only handling promise rejections. Then suddenly I ended up in the catch() although the Promise resolved fine, just to learn that my handleResolve code threw an exception. Unsurprisingly my handleReject code was not prepared for this.