pub async fn future_timeout<F, Fut, O>(fut: F, duration: Duration) -> Result<O>where F: 'static + FnOnce() -> Fut, Fut: Future<Output = O>, O: 'static,