I have > 15 years of C++ experience with an open source project written in it with ~1e downloads. I also have a fair bit of Python experience. Also, I am currently a senior engineer at Google having done quite some backend work there. Maybe I come from a different direction than the people who work on Tokio, having no experience with Finagle.
For example I had trouble expressing non RPC like systems (for example an IRC client) and I had lots of trouble expressing things like: next, expect either this type of packet or this packet, but not this. But after the first, you can expect either. I found it quite cumbersome to express timeouts and regular pings which is mixed into the protocol.
Generally speaking coroutines make concurrent programming way more intuitive for me - I really enjoy that aspect of Go, though I really prefer everything else about Rust. Chaining futures makes sharing and passing state harder and error handling more difficult, IMHO.