Cancellation should probably only occur when the state of a coroutine's state is not `blocked_by::io` or `blocked_by::external`.