public virtual Task HandleAsync()

in src/ShellRouting/OrderedShellHandler.cs [26:57]


        public virtual Task<TResult> HandleAsync(Message message, TResult? previousResult, Action onHandled) =>
            HandleAsync(message, previousResult);

        public Task HandleAsync(Message message)
        {
            Logger?.LogDebug("Handing {MessageType} with ordered shell handler.", message.Header.MessageType);
            currentTask = new Task<TResult?>((state) =>
            {
                taskDepth++;
                var previousTask = (Task<TResult?>?)state;
                var previousResult = previousTask?.Result;

                var handled = false;
                Action onHandled = () =>
                {
                    handled = true;
                    taskDepth--;
                    if (taskDepth == 0)
                    {
                        currentTask = null;
                    }
                };
                var currentResult = HandleAsync(message, previousResult, onHandled).Result;
                if (!handled)
                {
                    onHandled();
                }
                return currentResult;
            }, currentTask);
            currentTask.Start();
            return currentTask;
        }