def register_event(self, direction, verb, child_fn, priority=10):
        """Register an event with all servers.

        Args:
            direction (str): `in`, `out`, `both`, or `girc`.
            verb (str): Event name, `all`, or `raw`.
            child_fn (function): Handler function.
            priority (int): Handler priority (lower priority executes first).

        Note: `all` will not match `raw` events. If you wish to receive both
        `raw` and all other events, you need to register these separately.
        """
        event_managers = []
        if direction in ('in', 'both'):
            event_managers.append(self._events_in)
        if direction in ('out', 'both'):
            event_managers.append(self._events_out)
        if direction == 'girc':
            event_managers.append(self._girc_events)

        for event_manager in event_managers:
            event_manager.register(verb, child_fn, priority=priority)