Is the non-local reasoning here a limitation of Rust, async Rust, or the libraries built around async Rust?