I wonder whether we should use the event processing convention of returning `True` if an event was handled and processing should stop and `False` is an event has not handled and processing should continue? That would avoid the slightly awkward handing around of `pdu_data`.