pub async fn retry<F, T, E, Fut>(f: F) -> Result<T>where Fut: Future<Output = Result<T, E>> + Send, F: FnMut() -> Fut, T: Send + 'static, E: Send + Into<Error> + 'static,