Am I the only one who is happy using normal callbacks? I think they are the best representation of the asynchronous flow.
Well, I was happy using normal callbacks, but then promises made me a bit happier and now I even happier with async/await.
You can definitely write clean code with only callbacks, but one has to be pretty careful if there are many nested asynchronous actions.
Promises and await make that code very much clearer.
And then as you use promise based code more and more (including with async/await), you eventually come to realize that while it looked good at first, its deeply, deeply flawed, and is at best a stepping stone to Observables :)
An observable is semantically very different to a promise, even if it can be thought as a promise with subsequent success calls.
Here is the proposal: https://github.com/tc39/proposal-observable