wrote :

#RustLang cancel correctness issues commonly occur with tokio::select, but are by no means restricted to them.

If you’re flushing two buffered writers concurrently, you shouldn’t use try_join because if one of them fails, the other flush will be cancelled rather than driven to completion.

This is a kind of cancellation issue no one has really talked about but we’ve run into this at Oxide!

To address this we have a new macro called join_then_try: