static Task<C> map2<A, B, C>(Task<A> a, Task<B> b, C Function(A a, B b) fn) => tupled2(a, b).map((ab) => ab.apply(fn));