apply2<B, C, D>(ob: Supplier< Future<B> >, oc: Supplier< Future<C> >, f: (a: A, b: B, c: C) => D): Future<D> {
        return this.flatMap(a => ob().flatMap(b => oc().map(c => f(a, b, c))));
    }