docs: def reserve(self, timeout=None):
          """Reserve a job from one of the watched tubes, with optional timeout
          in seconds. Returns a Job object, or None if the request times out."""
          if timeout is not None:
              command = 'reserve-with-timeout %d\r\n' % timeout
          else:
              command = 'reserve\r\n'
          try:
              return self._interact_job(command,
                                        ['RESERVED'],
                                        ['DEADLINE_SOON', 'TIMED_OUT'])
          except CommandFailed:
              exc = sys.exc_info()[1]
              _, status, results = exc.args
              if status == 'TIMED_OUT':
                  return None
              elif status == 'DEADLINE_SOON':
                  raise DeadlineSoon(results)