But is not better the way it's done with the EventDispatcherAsync? We kept each class with a single responsibility, and here if I'm not misunderstood you're doing exactly the same as in the old dispatcher, but moving the logic to queue the event to this class instead of the event.

So the key question is, what's the difference between CliEventDispatcherAsync and EventDispatcherAsync?