public override async Task HandleAsync()

in src/Engines/ExecuteRequestHandler.cs [210:252]


        public override async Task<ExecutionResult> HandleAsync(Message message, ExecutionResult? previousResult, Action onHandled)
        {
            this.logger.LogDebug($"Asked to execute code:\n{((ExecuteRequestContent)message.Content).Code}");

            if (previousResult != null && previousResult.Value.Status != ExecuteStatus.Ok)
            {
                this.logger.LogDebug("Aborting due to previous execution result indicating failure: {PreviousResult}", previousResult.Value);
                onHandled();
                await SendAbortMessage(message);
                return ExecutionResult.Aborted;
            }

            var executionCount = IncrementExecutionCount();
            shellServer.NotifyBusyStatus(message, ExecutionState.Busy);

            try
            {
                var result = await ExecutionTaskForMessage(message, executionCount, onHandled);
                return result;
            }
            catch (TaskCanceledException tce)
            {
                this.logger?.LogDebug(tce, "Task cancelled.");
                return new ExecutionResult
                {
                    Output = null,
                    Status = ExecuteStatus.Abort
                };
            }
            catch (Exception e)
            {
                this.logger?.LogError(e, "Unable to process ExecuteRequest");
                return new ExecutionResult
                {
                    Output = e,
                    Status = ExecuteStatus.Error
                };
            }
            finally
            {
                shellServer.NotifyBusyStatus(message, ExecutionState.Idle);
            }
        }