Promises are an alternative pattern to callbacks for writing asynchronous code. A promise represents an operation that hasn't completed yet but is expected to do so in the future. As the name promise suggests, a promise is a contract to eventually provide a value or a reason for failure (that is, an error). You may already be familiar with this pattern from Tasks in .NET or Futures in Java. A promise has three possible states:
When executing a single operation, the callback-based and promise-based approaches appear quite similar. The power of promises comes when combining asynchronous operations.
Consider an example where we have asynchronous library functions for obtaining, processing, and aggregating data. We want to perform these operations in turn then display...