Promises are functional

callback-based functions do not return anything, and so are hard to compose. A function with no return value is executed only for its side effects – a function with no return value or side effects is simply a black hole. So programming with callbacks is inherently imperative, it is about sequencing…

Promises and the Inversion of Control

The problem with callbacks is that they force you to defer the responsability of the control flow to the asynchronous function you are invoking. Promises are meant to solve this problem. Rest of the article here…