summaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/npm-registry-client/lib/fetch.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/node_modules/npm-registry-client/lib/fetch.js')
-rw-r--r--deps/npm/node_modules/npm-registry-client/lib/fetch.js11
1 files changed, 9 insertions, 2 deletions
diff --git a/deps/npm/node_modules/npm-registry-client/lib/fetch.js b/deps/npm/node_modules/npm-registry-client/lib/fetch.js
index e931d371ee..ff3ee216b7 100644
--- a/deps/npm/node_modules/npm-registry-client/lib/fetch.js
+++ b/deps/npm/node_modules/npm-registry-client/lib/fetch.js
@@ -18,16 +18,19 @@ function fetch (uri, params, cb) {
makeRequest.call(client, uri, params, function (er, req) {
if (er) return cb(er)
- req.on('error', function (er) {
+ req.once('error', retryOnError)
+
+ function retryOnError (er) {
if (operation.retry(er)) {
client.log.info('retry', 'will retry, error on last attempt: ' + er)
} else {
cb(er)
}
- })
+ }
req.on('response', function (res) {
client.log.http('fetch', '' + res.statusCode, uri)
+ req.removeListener('error', retryOnError)
var er
var statusCode = res && res.statusCode
@@ -37,6 +40,10 @@ function fetch (uri, params, cb) {
res.resume()
if (process.version === 'v0.10.0') unstick(res)
+ req.once('error', function (er) {
+ res.emit('error', er)
+ })
+
return cb(null, res)
// Only retry on 408, 5xx or no `response`.
} else if (statusCode === 408) {