You’re right: Futures/Tokio’s abstractions are hard. Being able to compose them in surprising, powerful ways has taken me ~5 months of work.
It’s hard to communicate that without putting people off entirely, but even in Rust synchronous code is far simpler to understand than asynchronous.
I think that as the Futures community grows the floor will raise on what you have to worry about, but that’ll be the product of a lot of experimentation.
Congrats on what you’ve built. :-) Building a server sounds like a lot of fun.