> I have the conclusion opt-in async/await is a mistake. I think high level language/runtime like c# should handle it automatically...
This is not a good idea unless you like having to make all your code thread-safe (well, async-safe). Explicit declaration of "hey this method might not run all at once or be interleaved with other methods" is a good idea; explicit opt-in is the same in every other implementation of async/await (ex: js).