I've been making a 2d game in bevy and it's a lot of fun. I would recommend trying it. I haven't had any issues that are common with rust like fighting the borrow checker.
The situation is getting better, though. Just not with every release.
I imagine work on async needs to be slow and more methodical due to how it interacts with the rest of the language. So a lot of language features are being added to support it more ergonomically. However, those features are also being designed very carefully, and as a result they ens up being just overall great boons themselves too.
So, tldr: async can suck a bit, but slowly getting better, and as a result it's making the rest of the language better too.
I don't think some people who complain about async in Rust don't truly appreciate how "high level" it feels and how unobtrusive—for the most part—it is for a systems programming language!