public static Task <IFailableResult <TResult, TNewFailure> > OnFailureAsync <TResult, TFailure, TNewFailure>( this IFailableResult <TResult, TFailure> result, Func <TFailure, Task <IFailableResult <TResult, TNewFailure> > > onFailureAsync ) => result.Handle( s => SuccessResult <TResult, TNewFailure> .CreateAsync(s), f => onFailureAsync(f));
public static Task <IFailableResult <TResult, TNewFailure> > OnFailureAsync <TResult, TFailure, TNewFailure>( this IFailableResult <TResult, TFailure> result, Func <TFailure, Task <TNewFailure> > onFailureAsync, bool configureAwait = false ) => result.Handle( s => SuccessResult <TResult, TNewFailure> .CreateAsync(s), async f => FailureResult <TResult, TNewFailure> .Create(await onFailureAsync(f).ConfigureAwait(configureAwait)));
public static Task <IFailableResult <TResult, TNewFailure> > OnFailureAsync <TResult, TFailure, TNewFailure>( this Task <IFailableResult <TResult, TFailure> > asyncResult, Func <TFailure, Task <IFailableResult <TResult, TNewFailure> > > onFailure, bool configureAwait = false ) => asyncResult.HandleAsync( s => SuccessResult <TResult, TNewFailure> .CreateAsync(s), f => onFailure(f), configureAwait);