code: function PoolRequestSet(pool, options, callback) {
      this.options = options || {};
      this.pool = pool;
      this.callback = callback;
  
      if (this.options.data instanceof Stream || this.options.end === false) {
          this.max_attempts = 1;
      } else {
          this.max_attempts = options.max_attempts || Math.min(pool.options.max_retries + 1, Math.max(pool.length, 2));
      }
      this.attempts_remaining = this.max_attempts;
  
      this.max_timeouts = options.max_timeouts || 1; // no retries on timeouts by default
      this.timeouts = 0;
  
      this.max_hangups = options.max_hangups || 2;
      this.hangups = 0;
  
      this.max_aborts = options.max_aborts || 2;
      this.aborts = 0;
      this.duration = null;
  
      if (!options.retry_delay && options.retry_delay !== 0) {
          options.retry_delay = 20;
      }
      this.delay = options.retry_delay;
  }
docs: PoolRequestSet - an object to track server requests and handle retries  pool: a pool of endpoints options: { attempts: number of tries maxHangups: number of 'socket hang ups' before giving up (2) timeout: request timeout in ms maxAborts: number of 'aborted' before giving up (2) retryDelay: minimum ms to wait before first retry using exponential backoff (20) } callback: function (err, response, body) {}