The first ordering of no operation relies on SeqCst semantics.
All works with Acquire/Release semantics, so there is no reason to use the SeqCst ordering.
The second ordering argument is for the failure, in which case we don't read any data,
and therefore don't need any synchronization.
The Responder never actually dealt with the intermediary stages of
CancelingRequested and CancelingBuildingResponse, but could still observe them.
Despite that, the loom tests still don't reach any panic
Channel should not be usable to use with non Send/Sync messages types
because it allows transfering types across threads
This patch also relies on the auto trait implementations for Requester/Responder.
This is technically a breaking change, but I don't think it should be a major release.
This is unlikely to affect anyone, and if it does, it's probably uncovering unsoundness