pub async fn select2<T1, T2, A, B>(a: A, b: B) -> Sel2<T1, T2>where A: Future<Output = T1>, B: Future<Output = T2>,