public Task <Unit> MatchAsync(TryOptionAsync <A> opt, Func <A, Task> SuccAsync, Action Fail) => opt.MatchAsync( SuccAsync: SuccAsync, Fail: Fail);
public Task <Unit> MatchAsync(TryOptionAsync <A> opt, Func <A, Task> SuccAsync, Func <Task> FailAsync) => opt.MatchAsync( SuccAsync: SuccAsync, FailAsync: FailAsync);
public Task <B> MatchUnsafeAsync <B>(TryOptionAsync <A> opt, Func <A, Task <B> > SuccAsync, Func <Task <B> > FailAsync) => opt.MatchAsync( SomeAsync: SuccAsync, NoneAsync: FailAsync, FailAsync: _ => FailAsync());
public Task <B> MatchUnsafeAsync <B>(TryOptionAsync <A> opt, Func <A, Task <B> > SuccAsync, Func <B> Fail) => opt.MatchAsync( SuccAsync, None: Fail, Fail: _ => Fail());
public Task <B> MatchAsync <B>(TryOptionAsync <A> opt, Func <A, B> Succ, Func <Task <B> > FailAsync) => opt.MatchAsync( Succ, NoneAsync: FailAsync, FailAsync: async _ => await FailAsync());
public static Task <R> match <A, R>(TryOptionAsync <A> self, Func <A, Task <R> > Some, Func <Task <R> > None, R Fail) => self.MatchAsync(Some, None, Fail);
public Task <B> Fail(Func <Exception, Task <B> > f) => value.MatchAsync(succHandler, noneHandler, f);