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