code: async def _notify_observers(self, delta, old_obj, new_obj):
          
          if new_obj and not old_obj:
              delta.type = 'add'
  
          log.debug(
              'Model changed: %s %s %s',
              delta.entity, delta.type, delta.get_id())
  
          for o in self._observers:
              if o.cares_about(delta):
                  asyncio.ensure_future(o(delta, old_obj, new_obj, self),
                                        loop=self._connector.loop)
docs: Call observing callbacks, notifying them of a change in model state
  
          :param delta: The raw change from the watcher
              (:class:`juju.client.overrides.Delta`)
          :param old_obj: The object in the model that this delta updates.
              May be None.
          :param new_obj: The object in the model that is created or updated
              by applying this delta.