When @sandeep calls, I follow ;-)
Rich Harris's Gist-Blog post drew some attention :-)
What is async and await?
async/await is syntactical sugar on top of generator functions which yield Promises. Personally, I don't like the generator syntax; that's why I sparingly write any code like this function* fn() { yield maybe.something() }.
So I think async and await are excellent additions but as Rich Harris pointed out, the parser and code generators must do much better or only restrict its usage or use cases.
The more I think about it, the less I need async and await. Most of my problems are gone when we have widely accessible cancellable Promises. That would solve more of my code smell. Because who expects a Promise when one defines an async function() { which await maybe.something() }. I opened more questions then I answered, sorry ;-)