Really don't like the magic field access syntax.
From a language-feel and ergonomics standpoint, I agree. But the Rust team has made it pretty clear why a postfix is much more flexible, and I think we'll grow into it.
I do think it'll continue as a bit of a Rust oddity when compared to other async/await implementations (e.g., Python).
var result = (await (await obj.DoSomething()).SomeOperation()).SomeValue;
In the end, all syntax is magic that you need to get used to, I guess.Want prefix await? Go for it!
res <- await $ foo bar
Want postfix? You can have that too! res <- foo bar & await
Being “just a function” means it composes with everything else in the language, something the Rust languages designers have held in high regard when designing this.(But I also fully appreciate the design constraints that prevent Rust from using “just a method” or ”just a macro”)