public async ValueTask <B> Apply(ValueTask <Func <A, A, B> > fab, ValueTask <A> fa, ValueTask <A> fb) { await Task.WhenAll(fab.AsTask(), fa.AsTask(), fb.AsTask()).ConfigureAwait(false); return(fab.Result(fa.Result, fb.Result)); }