diff --git a/README.md b/README.md index 5a79791..f7147e3 100644 --- a/README.md +++ b/README.md @@ -182,6 +182,29 @@ request({ }); ``` +## How to access the underlying request library + +You can access to the underlying `request` library thanks to `request.Request`: + +```javascript +const request = require('requestretry'); +console.log(request.Request); // original request library +``` + +Thus, if needed, it's possible to monkey-patch or extend the underlying Request library: + +```javascript +request.Request = class extends request.Request { + constructor(url, options, f, retryConfig) { + super(url, options, f, retryConfig); + // this constructor will be called for every requestretry call, + // and give you global logging + console.log('Request', url, options, f, retryConfig); + } +} +``` + + ## Modifying `request` options You can use the `defaults` method to provide default options like so: diff --git a/index.js b/index.js index 1d09141..a152918 100644 --- a/index.js +++ b/index.js @@ -166,7 +166,7 @@ Request.prototype.abort = function () { function Factory(url, options, f) { var retryConfig = _.chain(_.isObject(url) ? url : options || {}).defaults(DEFAULTS).pick(Object.keys(DEFAULTS)).value(); - var req = new Request(url, options, f, retryConfig); + var req = new Factory.Request(url, options, f, retryConfig); req._tryUntilFail(); return req; } diff --git a/test/request.test.js b/test/request.test.js new file mode 100644 index 0000000..b2ef3bd --- /dev/null +++ b/test/request.test.js @@ -0,0 +1,20 @@ +'use strict'; + +var request = require('../'); +var t = require('chai').assert; + +describe('Request', function () { + it('should use overridden Request', function (done) { + var set = false; + request.Request = class extends request.Request { + constructor(url, options, f, retryConfig) { + super(url, options, f, retryConfig); + set = true; + } + }; + request('http://www.filltext.com/?rows=1', function (err, response, body) { + t.strictEqual(set, true); + done(); + }); + }); +});