Async/await is fantastic compared to not having anything at all. It's a
big downside compared to other things you can do (cf Go, Erlang), and hard to get rid of. It's the classic case of getting easy short-term benefits at the expense of long-term costs. It's main benefit from an implementor's perspective is that it's better than nothing and
very cheap to implement quickly. Just as .NET has lived to regret reified generics[1], it will live to regret async/await.
[1]: Maybe not C# programmers, but there are easier ways to do a single-language runtime.