public static ICommandBuilder <T> Add <T>(this ICommandBuilder <T> builder, AsyncContextHandler <T> action) =>
        builder.Add(new AsyncCommand <T>(async(c, ct) =>
        {
            await action(c, ct).ConfigureAwait(false);

            return(c);
        }).ToSync());
Example #2
0
        private static AsyncContextTransformation <TContext> Compose(AsyncContextTransformation <TContext> f1, AsyncContextHandler <TContext> f2) =>
        async(c, ct) =>
        {
            var r = await f1(c, ct).ConfigureAwait(false);

            if (!ct.IsCancellationRequested)
            {
                await f2(r, ct).ConfigureAwait(false);
            }

            return(r);
        };
        public static IAsyncCommandBuilder <T> AddIf <T>(this IAsyncCommandBuilder <T> builder, Predicate <T> predicate, AsyncContextHandler <T> action) =>
        builder.Add(new AsyncCommand <T>(async(i, ct) =>
        {
            if (predicate(i))
            {
                await action(i, ct).ConfigureAwait(false);
            }

            return(i);
        }));