function onRequestResponse (options, error, response, body) {
  const callback = options.callback;

  // Encoding is null so body should be a buffer object
  if (error || !body || !body.toString) {
    // Pure request error (bad connection, wrong url, etc)
    return callback(new RequestError(error, options, response));
  }

  response.responseStartTime = Date.now();
  response.isCloudflare = /^cloudflare/i.test('' + response.caseless.get('server'));
  response.isHTML = /text\/html/i.test('' + response.caseless.get('content-type'));

  // If body isn't a buffer, this is a custom response body.
  if (!Buffer.isBuffer(body)) {
    return callback(null, response, body);
  }

  // Decompress brotli compressed responses
  if (/\bbr\b/i.test('' + response.caseless.get('content-encoding'))) {
    if (!brotli.isAvailable) {
      const cause = 'Received a Brotli compressed response. Please install brotli';
      return callback(new RequestError(cause, options, response));
    }

    response.body = body = brotli.decompress(body);
  }

  if (response.isCloudflare && response.isHTML) {
    onCloudflareResponse(options, response, body);
  } else {
    onRequestComplete(options, response, body);
  }
}
function onRequestResponse (options, error, response, body) {
  const callback = options.callback;

  // Encoding is null so body should be a buffer object
  if (error || !body || !body.toString) {
    // Pure request error (bad connection, wrong url, etc)
    return callback(new RequestError(error, options, response));
  }

  response.responseStartTime = Date.now();
  response.isCloudflare = /^cloudflare/i.test('' + response.caseless.get('server'));
  response.isHTML = /text\/html/i.test('' + response.caseless.get('content-type'));

  // If body isn't a buffer, this is a custom response body.
  if (!Buffer.isBuffer(body)) {
    return callback(null, response, body);
  }

  // Decompress brotli compressed responses
  if (/\bbr\b/i.test('' + response.caseless.get('content-encoding'))) {
    if (!brotli.isAvailable) {
      const cause = 'Received a Brotli compressed response. Please install brotli';
      return callback(new RequestError(cause, options, response));
    }

    response.body = body = brotli.decompress(body);
  }

  if (response.isCloudflare && response.isHTML) {
    onCloudflareResponse(options, response, body);
  } else {
    onRequestComplete(options, response, body);
  }
}
function onRequestResponse ( options , error , response , body ) { const callback = options . callback ; // Encoding is null so body should be a buffer object if ( error || ! body || ! body . toString ) { // Pure request error (bad connection, wrong url, etc) return callback ( new RequestError ( error , options , response ) ) ; } response . responseStartTime = Date . now ( ) ; response . isCloudflare = / ^cloudflare / i . test ( '' + response . caseless . get ( 'server' ) ) ; response . isHTML = / text\/html / i . test ( '' + response . caseless . get ( 'content-type' ) ) ; // If body isn't a buffer, this is a custom response body. if ( ! Buffer . isBuffer ( body ) ) { return callback ( null , response , body ) ; } // Decompress brotli compressed responses if ( / \bbr\b / i . test ( '' + response . caseless . get ( 'content-encoding' ) ) ) { if ( ! brotli . isAvailable ) { const cause = 'Received a Brotli compressed response. Please install brotli' ; return callback ( new RequestError ( cause , options , response ) ) ; } response . body = body = brotli . decompress ( body ) ; } if ( response . isCloudflare && response . isHTML ) { onCloudflareResponse ( options , response , body ) ; } else { onRequestComplete ( options , response , body ) ; } }
The argument convention is options first where possible, options always before response, and body always after response.
The argument convention is options first where possible options always before response and body always after response .