An async block ends up `!Send` even though every type it names is `Send`. Under the hood, what determines whether the generated `Future` is `Send`?
use std::rc::Rc;
async fn yield_now() { /* ... awaits ... */ }
let fut = async {
let r = Rc::new(0);
yield_now().await;
drop(r);
};
// is `fut: Send` ?