public RemoveResult <Q> Then <Q> (Func <P, Q> f) { if (f == null) { throw new ArgumentNullException(nameof(f)); } return(Match( success: value => RemoveResult <Q> .WasSuccess(f(value)), notFound: () => RemoveResult <Q> .WasNotFound() )); }
public async static Task <RemoveResult <Q> > ThenAsync <Q> (this RemoveResult <Q> task , Func <Q, Task> f) { if (task == null) { throw new ArgumentNullException(nameof(task)); } if (f == null) { throw new ArgumentNullException(nameof(f)); } return(await task .Match( success : async value => { await f(value); return task; }, notFound : () => Task.FromResult(RemoveResult <Q> .WasNotFound()) )); }