code: def _on_del_route(self, msg):
          
          if msg.is_dead:
              return
  
          target_id = int(msg.data)
          registered_stream = self.router.stream_by_id(target_id)
          if registered_stream is None:
              return
  
          stream = self.router.stream_by_id(msg.auth_id)
          if registered_stream != stream:
              LOG.error('%r: received DEL_ROUTE for %d from %r, expected %r',
                        self, target_id, stream, registered_stream)
              return
  
          context = self.router.context_by_id(target_id, create=False)
          if context:
              LOG.debug('%r: firing local disconnect for %r', self, context)
              mitogen.core.fire(context, 'disconnect')
  
          LOG.debug('%r: deleting route to %d via %r', self, target_id, stream)
          routes = self._routes_by_stream.get(stream)
          if routes:
              routes.discard(target_id)
  
          self.router.del_route(target_id)
          if stream.remote_id != mitogen.parent_id:
              self._propagate_up(mitogen.core.DEL_ROUTE, target_id)
          self._propagate_down(mitogen.core.DEL_ROUTE, target_id)
docs: Respond to :data:`mitogen.core.DEL_ROUTE` by validating the source of
          the message, updating the local table, propagating the message
          upwards, and downwards towards any stream that every had a message
          forwarded from it towards the disconnecting context.