/// <summary>
        /// Forces exclusive using a lockhandler defined by <see cref="IExclusiveSagaAccessLock"/>
        /// </summary>
        public static void EnforceExclusiveAccess(this StandardConfigurer <ISagaStorage> configurer, IExclusiveSagaAccessLock locker)
        {
            if (configurer == null)
            {
                throw new ArgumentNullException(nameof(configurer));
            }

            configurer
            .OtherService <IPipeline>()
            .Decorate(c =>
            {
                var pipeline          = c.Get <IPipeline>();
                var cancellationToken = c.Get <CancellationToken>();
                var step = new EnforceExclusiveSagaAccessIncomingStep(locker, cancellationToken);

                return(new PipelineStepInjector(pipeline)
                       .OnReceive(step, PipelineRelativePosition.Before, typeof(LoadSagaDataStep)));
            });
        }
 public EnforceExclusiveSagaAccessIncomingStep(IExclusiveSagaAccessLock lockHandler, CancellationToken cancellationToken)
 {
     _lockHandler       = lockHandler;
     _cancellationToken = cancellationToken;
 }