pub async fn select3<T1, T2, T3, A, B, C>(a: A, b: B, c: C) -> Sel3<T1, T2, T3>where A: Future<Output = T1>, B: Future<Output = T2>, C: Future<Output = T3>,