did you see you do something very similar to the ORM? https://github.com/doctrine/doctrine2/blob/master/lib/Doctrine/ORM/Event/ListenersInvoker.php

what about following ListenersInvoker as closely as ever possible? then we maybe can push that up into the doctrine event library and refactor some day.