Have you actually tried to implement async in rust from the ground up.
It is nothing like what you just described