def METHOD_NAME(self, event):
    # TODO: buffer and try to merge consecutive events
    for subscriber in self._subscribers:
        try:
            subscriber(event)
        except Exception as e:  # pylint: disable=broad-except
            warnings.warn(f"unhandled exception during event notification: {e}")