“A promise is an object that wraps an asynchronous task. Pass that object around, and write clean, ordered code; a logical, simple, modular stream of progression from one asynchronous task to another.”
They make asynchronous operations chainable and standardized
They clean up asynchronous spaghetti
They simplify error handling
Many objects can be notified about completion, not just one
They make your apps more robust
Promises (the computer science variety) as defined on WikiPedia.