I don't know about the compiler internals, but from the perspective of a C# user, async/await is really excellent. It's easy to use and the resulting code is easy to read and understand. Much simpler than chained futures, Go-style channels, etc. It's good language design in that sense (the implementation may or may not be good).