It also allows for workflows that are really hard with promise chains alone, even if what it does isn't so simple..
while (somecondition) {
try {
await sleep(1000);
somecondition = await someAsyncAction();
} catch(err) {
}
}
Doing retries, or loops against promise actions are really cumbersome with promises directly, but with async/await becomes much more clear in terms of action and intent.