pub async fn optimistic_retry_async<Func, Fut, T, E>( ctx: &'_ str, f: Func) -> Result<T, OptimisticRetryError<E>> where Func: FnMut() -> Fut, Fut: Future<Output = Result<T, E>>, E: Error,