react / wstein / node_modules / jest-cli / node_modules / jsdom / node_modules / request / node_modules / har-validator / node_modules / bluebird / js / main / timers.js
81160 views"use strict";1module.exports = function(Promise, INTERNAL) {2var util = require("./util.js");3var TimeoutError = Promise.TimeoutError;45var afterTimeout = function (promise, message) {6if (!promise.isPending()) return;7if (typeof message !== "string") {8message = "operation timed out";9}10var err = new TimeoutError(message);11util.markAsOriginatingFromRejection(err);12promise._attachExtraTrace(err);13promise._cancel(err);14};1516var afterValue = function(value) { return delay(+this).thenReturn(value); };17var delay = Promise.delay = function (value, ms) {18if (ms === undefined) {19ms = value;20value = undefined;21var ret = new Promise(INTERNAL);22setTimeout(function() { ret._fulfill(); }, ms);23return ret;24}25ms = +ms;26return Promise.resolve(value)._then(afterValue, null, null, ms, undefined);27};2829Promise.prototype.delay = function (ms) {30return delay(this, ms);31};3233function successClear(value) {34var handle = this;35if (handle instanceof Number) handle = +handle;36clearTimeout(handle);37return value;38}3940function failureClear(reason) {41var handle = this;42if (handle instanceof Number) handle = +handle;43clearTimeout(handle);44throw reason;45}4647Promise.prototype.timeout = function (ms, message) {48ms = +ms;49var ret = this.then().cancellable();50ret._cancellationParent = this;51var handle = setTimeout(function timeoutTimeout() {52afterTimeout(ret, message);53}, ms);54return ret._then(successClear, failureClear, undefined, handle, undefined);55};5657};585960