<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def cancel(self, message=None):
 """Schedule the fiber to be cancelled in the next iteration of the event loop. Cancellation works by throwing a :class:`~gruvi.Cancelled` exception into the fiber. If *message* is provided, it will be set as the value of the exception. """

        if not self.is_alive():
            return
        if message is None:
            message = 'cancelled by Fiber.cancel()'
        self._hub.run_callback(self.throw, Cancelled, Cancelled(message))