docs: def reserve_job(self, timeout=5):
          """Reserve a job for this connection. Blocks for TIMEOUT secionds and raises TIMED_OUT if no job was available
  
          :param timeout: Time to wait for a job, in seconds.
          :type timeout: int
          """
          timeout = int(timeout)
          if self.socket_timeout is not None:
              if timeout >= self.socket_timeout:
                  raise ValueError('reserve_job timeout must be < socket timeout')
          if not self._watchlist:
              raise ValueError('Select a tube or two before reserving a job')
          with self._sock_ctx() as socket:
              self._send_message('reserve-with-timeout {0}'.format(timeout), socket)
              job_id, job_data = self._receive_id_and_data_with_prefix(b'RESERVED', socket)
              return Job(job_id, job_data)