pub fn try_join_all_safe<I, T: Send, E: Send>(
    iter: I
) -> impl Future<Output = Result<Vec<T>, E>> + Sendwhere
    I: IntoIterator + Send,
    <I as IntoIterator>::Item: Future<Output = Result<T, E>> + Send,