Building Thread-safe Async Primitives in 150 lines of Rust