A promise object is a "machine" holding one of two states:
1.
Pending
2.
Settled
A settled state is the deffered result of the promise. This state will be either (a) rejected or (b) resolved. The rejected state throws an error and the fulfilled state returns either null or a value.