http (options) {
    const uri = options.pathname
    const requestOptions = Object.assign({
      method: options.method,
      uri,
      body: options.body,
      json: 'json' in options ? Boolean(options.json) : true,
      qs: options.parameters || options.qs,
      headers: options.headers
    }, this.requestOptions)

    if (options.noAuth) {
      delete requestOptions.auth
    }

    if (options.stream) return request(requestOptions)

    return new Promise((resolve, reject) => {
      this._request(requestOptions, (err, res) => {
        if (err) return reject(err)
        if (res.statusCode < 200 || res.statusCode > 299) {
          const error = new Error(res.body.message || res.body)
          // .code is backwards compatible with pre-5.0.0 code.
          error.code = res.statusCode
          error.statusCode = res.statusCode
          return reject(error)
        }
        resolve(res)
      })
    })
  }
Invoke a REST request against the Kubernetes API server
@param {string} method - HTTP method, passed directly to `request`
@param {ApiRequestOptions} options - Options object
@param {callback} cb - The callback that handles the response
@returns {Stream} If cb is falsy, return a stream