diff --git a/index.js b/index.js index e8dc740..b8ccee0 100644 --- a/index.js +++ b/index.js @@ -1,4 +1,5 @@ 'use strict'; + var EventEmitter = require('events').EventEmitter; var http = require('http'); var https = require('https'); @@ -19,6 +20,7 @@ var createErrorClass = require('create-error-class'); var nodeStatusCodes = require('node-status-codes'); var isPlainObj = require('is-plain-obj'); var parseJson = require('parse-json'); +var isRetryAllowed = require('is-retry-allowed'); function requestAsEventEmitter(opts) { opts = opts || {}; @@ -271,8 +273,8 @@ function normalizeArguments(url, opts) { if (typeof opts.retries !== 'function') { var retries = opts.retries; - opts.retries = function backoff(iter) { - if (iter > retries) { + opts.retries = function backoff(iter, err) { + if (iter > retries || !isRetryAllowed(err)) { return 0; } diff --git a/package.json b/package.json index d4c097a..04ed3cc 100644 --- a/package.json +++ b/package.json @@ -49,6 +49,7 @@ "duplexer2": "^0.1.4", "is-plain-obj": "^1.0.0", "is-redirect": "^1.0.0", + "is-retry-allowed": "^1.0.0", "is-stream": "^1.0.0", "lowercase-keys": "^1.0.0", "node-status-codes": "^1.0.0",