A chain of responsibility pattern implementation in .NET that supports retry policy, sync and async steps, rollback, pipeline recovery by cache and visual documentation using diagrams.
It is needed to implement a easier way to acess a specific request. Maybe creating a method that receives a generic parameter to cast the request and use it like it in RequestStep.
I would like to propose adding 'Injectable Workflows into Pipelines'. Such as what you can do in CommandLib. You can view the example of injectable workflows in CommandLib here.
Basically you can have something with various 'tasks' and comprise workflows.
Example tasks
Wash Hands
Turn on sink
Push soap on hands
Wash hands
Dry hands
Do Dishes
Wash Hands <-- Command would be re-used
Clean Dishes
Put Dishes away
Dry hands <-- Command would be re-used
I am not sure if this is a good example, check out the sample code from CommandLib, they have an excellent example.
I also suggest changing all of your Queue<> or Stack<> to Concurrent or Immutable objects. I prefer Concurrent to ensure no issues with threading... However I have read that I think Immutable is also thread safe.