private async ValueTask ExecuteStep(IValueTaskStep step, T context, List <StepStat> stats, CancellationToken token)
        {
            if (step is IValueTaskStep <T> stepWithCtx)
            {
                stepWithCtx.Context = context;
            }

            if (step.CanProcess())
            {
                var dt = DateTime.UtcNow;
                await step.Process(token);

                var tt = (DateTime.UtcNow - dt).TotalMilliseconds;
                step.WasFired  = true;
                step.TimeTaken = tt;
                stats.Add(StepStat.CreateFromStep(step));
            }
        }