… that pauses the execution of the async function and waits for the passed
Promise's resolution, and then resumes the
asyncfunction's execution and returns the resolved value.
This synchronous aspect is not mentioned enough. It actually means that within the async function, the await calls are ordinary synchronous calls with all the inconveniences and conveniences that come with synchronous calls. Async/await is not syntactic sugar over promises — with the await calls, we lose the flexibility and power of asynchronous calls.
The fact that we use promises inside these await calls is misleading. It’s possible to implement async/await with try objects, which are the synchronous counterparts of promises.