UNPKG

1.64 kBJavaScriptView Raw
1'use strict';
2
3var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
4
5var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
6
7var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
8
9var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
10
11var _inherits2 = require('babel-runtime/helpers/inherits');
12
13var _inherits3 = _interopRequireDefault(_inherits2);
14
15function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
17var CancelError = function (_Error) {
18 (0, _inherits3.default)(CancelError, _Error);
19
20 function CancelError(message) {
21 (0, _classCallCheck3.default)(this, CancelError);
22
23 var _this = (0, _possibleConstructorReturn3.default)(this, (CancelError.__proto__ || Object.getPrototypeOf(CancelError)).call(this, message));
24
25 _this.name = 'CancelError';
26 return _this;
27 }
28
29 return CancelError;
30}(Error);
31
32var createDelay = function createDelay(willResolve) {
33 return function (ms, value) {
34 var timeoutId = void 0;
35 var internalReject = void 0;
36
37 var delayPromise = new Promise(function (resolve, reject) {
38 internalReject = reject;
39
40 timeoutId = setTimeout(function () {
41 var settle = willResolve ? resolve : reject;
42 settle(value);
43 }, ms);
44 });
45
46 delayPromise.cancel = function () {
47 if (timeoutId) {
48 clearTimeout(timeoutId);
49 timeoutId = null;
50 internalReject(new CancelError('Delay canceled'));
51 }
52 };
53
54 return delayPromise;
55 };
56};
57
58module.exports = createDelay(true);
59module.exports.reject = createDelay(false);
60module.exports.CancelError = CancelError;
\No newline at end of file