A promise is an object which can be returned synchronously from an asynchronous function.
There are 3 possible promise states: Fulfilled, Rejected and Pending
Fulfilled
Rejected
Pending