Task InnerInvoke(TransportMessage transportMessage, int currentIndex = 0)
{
if (currentIndex == linkElements.Count)
{
return Task.CompletedTask;
}
ILinkElement step = linkElements[currentIndex];
return step.Invoke(transportMessage, () => InnerInvoke(transportMessage, currentIndex + 1));
}
}