code: def throw(self, typ, val=None, tb=None):
          
          # The might seem redundant with self._fiber.cancel(exc), but it isn't
          # as self._fiber might be a "raw" fibers.Fiber() that doesn't have a
          # cancel() method.
          if self._hub is None or not self._fiber.is_alive():
              return
          self._hub.run_callback(self._fiber.throw, typ, val, tb)
          self._hub = self._fiber = None
docs: Throw an exception into the origin fiber. The exception is thrown
          the next time the event loop runs.