A Promise represents a value that may not be available yet but will eventually be resolved at some point in the future. The point is to allow developers to write asynchronous code in a more synchronous fashion, escaping from the popular callback hell.

Promises are not fully supported in all browsers yet (see support), however a lot of libraries mimick their behavior to make them usable right away; Bluebird is one of them.

For more information about how promises work and when to use them, there is complete overview.