Given two `.await` points, why can a value of type `T: !Send` held across one of them make the whole async fn's returned future `!Send`, even if that value is dropped before the function ends?
async fn f() {
let x = std::rc::Rc::new(0); // !Send
g().await; // x is live across this await
drop(x);
h().await;
}