docs: def step(self):
          """Grab a new message and dispatch it to the handler.
  
          This method should not be extended or overwritten. Instead,
          implementations of this daemon should implement the 'get_message()'
          and 'handle_message()' methods.
          """
          message = self.get_message()
          if message is None:
  
              self.sleep(self.idle_time)
              return None
  
          self.dispatch(message)
          # In non-greenthread environments this does nothing. In green-thread
          # environments this yields the context so messages can be acted upon
          # before exhausting the threadpool.
          self.sleep(0)