code: async def _notify_event_internal(self, conn_string, name, event):
          
  
          try:
              self._currently_notifying = True
              conn_id = self._get_conn_id(conn_string)
  
              event_maps = self._monitors.get(conn_string, {})
              wildcard_maps = self._monitors.get(None, {})
  
              wildcard_handlers = wildcard_maps.get(name, {})
              event_handlers = event_maps.get(name, {})
  
              for handler, func in itertools.chain(event_handlers.items(), wildcard_handlers.items()):
                  try:
                      result = func(conn_string, conn_id, name, event)
                      if inspect.isawaitable(result):
                          await result
                  except:  #pylint:disable=bare-except;This is a background function and we are logging exceptions
                      self._logger.warning("Error calling notification callback id=%s, func=%s", handler, func, exc_info=True)
          finally:
              for action in self._deferred_adjustments:
                  self._adjust_monitor_internal(*action)
  
              self._deferred_adjustments = []
              self._currently_notifying = False
docs: Notify that an event has occured.
  
          This method will send a notification and ensure that all callbacks
          registered for it have completed by the time it returns.  In
          particular, if the callbacks are awaitable, this method will await
          them before returning.  The order in which the callbacks are called
          is undefined.
  
          This is a low level method that is not intended to be called directly.
          You should use the high level public notify_* methods for each of the
          types of events to ensure consistency in how the event objects are
          created.
  
          Args:
              conn_string (str): The connection string for the device that the
                  event is associated with.
              name (str): The name of the event. Must be in SUPPORTED_EVENTS.
              event (object): The event object.  The type of this object will
                  depend on what is being notified.