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