code: def emit(self, rule='pass', stage=None, data={}, delay=None,
               optional=False):
          
          if stage is None:
              stage = self.stage.handlers.get(rule)
          if optional and stage is None:
              return
          if stage is None or stage not in self.crawler.stages:
              self.log.info("No next stage: %s (%s)" % (stage, rule))
              return
          state = self.dump_state()
          delay = delay or self.crawler.delay
          Queue.queue(stage, state, data, delay)
docs: Invoke the next stage, either based on a handling rule, or by calling
          the `pass` rule by default.