Task InvokeLogical(OutgoingLogicalContext context) { if (executingLogicalPipeline.Count == 0) { return Task.CompletedTask; } IOutgoingLogicalStep step = executingLogicalPipeline.Dequeue(); return step.Invoke(context, () => InvokeLogical(context)); }