That list of bullet points (except the compiler one) is also applicable to the whole async ecosystem in Rust :)
IME the bad compiler messages tend to come more often from the `async-trait` macro than from anything fundamental to asyc itself. Hoping the stabilization of async-trait helps with that. Backtraces with async are definitely a bit nasty though.