can we come together, when we just use the `pipedEvents` as a "storage" for events that should be thrown somewhere else, and do a 
```
$this->eventManagerService->dispatchWaitingEvent(Event::yourEventName);
```
This should throw an exception or something else when that event does not exist, just fire when exist. So we would use that `pipedEvents` just as a transport container for delayed events. I won't get any trouble with the situation "who flushes the pipe?" and we would be able to create an event on the one method and fire it somewhere else - means then when it makes sense for the lifecycle.