code: async def enter_rescue_mode(
              self, wait: bool = False, wait_interval: int = 5):
          
          try:
              self._data = await self._handler.rescue_mode(
                  system_id=self.system_id)
          except CallError as error:
              if error.status == HTTPStatus.FORBIDDEN:
                  message = "Not allowed to enter rescue mode"
                  raise OperationNotAllowed(message) from error
              else:
                  raise
  
          if not wait:
              return self
          else:
              # Wait for machine to finish entering rescue mode
              while self.status == NodeStatus.ENTERING_RESCUE_MODE:
                  await asyncio.sleep(wait)
                  self._data = await self._handler.read(system_id=self.system_id)
              if self.status == NodeStatus.FAILED_ENTERING_RESCUE_MODE:
                  msg = "{hostname} failed to enter rescue mode.".format(
                      hostname=self.hostname
                  )
                  raise RescueModeFailure(msg, self)
              return self
docs: Send this machine into 'rescue mode'.
  
          :param wait: If specified, wait until the deploy is complete.
          :param wait_interval: How often to poll, defaults to 5 seconds