pub async fn join_all_with_timeout<F, T>( futs: Vec<F>, duration: Duration, context: &str, ) -> Result<Vec<T>>where F: Future<Output = T>,
Run multiple futures and wait for all with a timeout