Promises have state, they start as pending and can settle to:
fulfilled meaning that the computation completed successfully.
rejected meaning that the computation failed.
Promise returning functions should never throw, they should return rejections instead. Throwing from a promise returnin...