public static Task ApplyAsync <TValue>(this Option <TValue> option, Func <TValue, Task> applyWhenSome, Func <Task> applyWhenNone) => option.DoAsync(applyWhenSome, applyWhenNone);
public static Task ApplyAsync <TValue>(this Option <TValue> option, Func <TValue, Task> apply) => option.DoAsync(apply);
public static Task <Option <TValue> > DoAsync <TValue>(this Option <TValue> option, Func <TValue, Task> @do) => option.DoAsync(@do, DelegateCache.Task);
public static async Task <Option <TValue> > DoOnNoneAsync <TValue>(this Option <TValue> option, Func <Task> @do) where TValue : notnull => await option.DoAsync(DelegateCache <TValue> .Task, @do);