What do promises have to do with all of this? Well, let's start by defining promises.
A promise represents the eventual result of an asynchronous operation.
|--Promises/A+ specification, http://promisesaplus.com/|
So, a promise object represents a value that may not be available yet, but will be resolved at some point in the future.
Promises have states and at any point in time, can be in one of the following: