pub fn block_on<F: Future>(f: F) -> F::Output {
    let mut f = pin!(f);
    run_executor(|cx| f.as_mut().poll(cx))
}
Run a future to completion on the current thread.

This function will block the caller until the given future has completed.

Use a [`LocalPool`] if you need finer-grained control over spawned tasks.
futures-executor/src/local_pool.rs