public static PromiseOfTry <NewTResult> SelectMany <TInput, TResult, NewTResult>( this PromiseOfTry <TInput> promise, Func <TInput, PromiseOfTry <TResult> > binder, Func <TInput, TResult, NewTResult> projector ) => () => promise.Run().Match( failure: exception => exception, success: obj => binder(obj).Run() .Match <Try <Exception, NewTResult> >( failure: ex => ex, success: o => projector(obj, o) ) );
public static PromiseOfTry <TResult> Select <TInput, TResult>( this PromiseOfTry <TInput> promise, Func <TInput, TResult> selector ) => promise.Map(selector);