code: def _wait(self, generator, method, timeout=None, *args, **kwargs):
          
          if self.debug:
              print("waiting for %s to pause" % generator)
  
          original_timeout = timeout
          while timeout is None or timeout > 0:
              last_time = time.time()
              if self._lock.acquire(False):  # timeout param was added in 3.2
                  try:
                      if self.can_resume():
                          return method(generator, *args, **kwargs)
                      elif self.has_terminated():
                          raise RuntimeError("%s has already terminated" % generator)
                  finally:
                      self._lock.release()
  
              if timeout is not None:
                  timeout -= time.time() - last_time
  
          msg = "%s did not pause after %ss" % (generator, original_timeout)
          if self.debug:
              print(msg)
          raise WaitTimeoutError(msg)
docs: Wait until generator is paused before running 'method'.