fn block<T: Send + 'static>( f: impl FnOnce() -> Result<T, String> + Send + 'static, ) -> impl Future<Output = Result<T, String>>