https://hachyderm.io/@rain 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:

https://docs.rs/cancel-safe-futures/latest/cancel_safe_futures/macro.join_then_try.html#why-use-join_then_try