summaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/npm-registry-client/node_modules/retry/lib/retry_operation.js
diff options
context:
space:
mode:
authorKat Marchán <kzm@sykosomatic.org>2016-09-22 07:59:37 -0700
committerJeremiah Senkpiel <fishrock123@rocketmail.com>2016-09-27 16:39:27 -0400
commitd44a9eb11b34900b44a9d135a2c965346fff702e (patch)
treea8d074826fb51641f5a7f24978e5e632b958ca84 /deps/npm/node_modules/npm-registry-client/node_modules/retry/lib/retry_operation.js
parent33aa953f918f624a44e538baf2a3ee41570ac303 (diff)
downloadandroid-node-v8-d44a9eb11b34900b44a9d135a2c965346fff702e.tar.gz
android-node-v8-d44a9eb11b34900b44a9d135a2c965346fff702e.tar.bz2
android-node-v8-d44a9eb11b34900b44a9d135a2c965346fff702e.zip
deps: upgrade npm to 3.10.8
PR-URL: https://github.com/nodejs/node/pull/8706 Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
Diffstat (limited to 'deps/npm/node_modules/npm-registry-client/node_modules/retry/lib/retry_operation.js')
-rw-r--r--deps/npm/node_modules/npm-registry-client/node_modules/retry/lib/retry_operation.js29
1 files changed, 26 insertions, 3 deletions
diff --git a/deps/npm/node_modules/npm-registry-client/node_modules/retry/lib/retry_operation.js b/deps/npm/node_modules/npm-registry-client/node_modules/retry/lib/retry_operation.js
index 52b895544e..2b3db8e177 100644
--- a/deps/npm/node_modules/npm-registry-client/node_modules/retry/lib/retry_operation.js
+++ b/deps/npm/node_modules/npm-registry-client/node_modules/retry/lib/retry_operation.js
@@ -1,5 +1,11 @@
-function RetryOperation(timeouts, retryForever) {
+function RetryOperation(timeouts, options) {
+ // Compatibility for the old (timeouts, retryForever) signature
+ if (typeof options === 'boolean') {
+ options = { forever: options };
+ }
+
this._timeouts = timeouts;
+ this._options = options || {};
this._fn = null;
this._errors = [];
this._attempts = 1;
@@ -7,12 +13,21 @@ function RetryOperation(timeouts, retryForever) {
this._operationTimeoutCb = null;
this._timeout = null;
- if (!!retryForever) {
+ if (this._options.forever) {
this._cachedTimeouts = this._timeouts.slice(0);
}
}
module.exports = RetryOperation;
+RetryOperation.prototype.stop = function() {
+ if (this._timeout) {
+ clearTimeout(this._timeout);
+ }
+
+ this._timeouts = [];
+ this._cachedTimeouts = null;
+};
+
RetryOperation.prototype.retry = function(err) {
if (this._timeout) {
clearTimeout(this._timeout);
@@ -37,18 +52,26 @@ RetryOperation.prototype.retry = function(err) {
}
var self = this;
- setTimeout(function() {
+ var timer = setTimeout(function() {
self._attempts++;
if (self._operationTimeoutCb) {
self._timeout = setTimeout(function() {
self._operationTimeoutCb(self._attempts);
}, self._operationTimeout);
+
+ if (this._options.unref) {
+ self._timeout.unref();
+ }
}
self._fn(self._attempts);
}, timeout);
+ if (this._options.unref) {
+ timer.unref();
+ }
+
return true;
};