private void Consumer_OnMessage(object sender, Message e)
        {
            try
            {
                circuitBreaker.Success();
                Logger.Debug($"message consumed");
                var receiveTask = InnerReceive(e);

                runningReceiveTasks.TryAdd(receiveTask, receiveTask);

                receiveTask.ContinueWith((t, state) =>
                {
                    var receiveTasks = (ConcurrentDictionary <Task, Task>)state;


                    Task toBeRemoved;
                    receiveTasks.TryRemove(t, out toBeRemoved);
                }, runningReceiveTasks, TaskContinuationOptions.ExecuteSynchronously);
            }
            catch (OperationCanceledException)
            {
                // For graceful shutdown purposes
                return;
            }
        }
        private void Consumer_OnMessage(object sender, Message e)
        {
            circuitBreaker.Success();
            Logger.Debug($"message consumed");
            var receiveTask = InnerReceive(e);

            runningReceiveTasks.TryAdd(receiveTask, receiveTask);

            receiveTask.ContinueWith((t, state) =>
            {
                var receiveTasks = (ConcurrentDictionary <Task, Task>)state;


                Task toBeRemoved;
                receiveTasks.TryRemove(t, out toBeRemoved);
            }, runningReceiveTasks, TaskContinuationOptions.ExecuteSynchronously);
        }