We went for some light reading, so we browsed to a page on async/await in JavaScript. Then we were led to look into Promise. Then we waded through the then hell. Then our headache worsened.

The problem with the then hell still lies in callbacks. One cannot use the return value of an async call, because it is just not ready. Instead one supplies a callback function in one variable. When the async call gets around to call the callback function, it will supply the result as the value of that variable. There has been no way around this until one modifies the language. Drum-roll, here comes the async/await construct.