static Task<D> map3<A, B, C, D>(Task<A> a, Task<B> b, Task<C> c, D Function(A a, B b, C c) fn) => tupled3(a, b, c).map((abc) => abc.apply(fn));