I am always curious that if a Promise is rejected at any position, will the following then() still be executed? Consider the following codes as an example:
It is clear that the rejection was caught in the second then(), and Promise.resolve() was not even executed. But once the rejection is caught in some place, everything went back to normal.
Therefore to ensure that once rejected, the whole process stops running until termination, we should put a catch() method at the very end and do not catch the reject() inside any then() before it.