Events that are likely expected to happen have a corresponding promise. Also other processes are exposed with have promises. The promise will let you wait for things to happen or if it already has happened execute instantly. It also executes asynchronously, which allows the code execution to continue.
The promise is always exposed on the object that it relates to. Some methods may also return a related promise, so that you may wait for the method to be resolved.