| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- const TimeoutError_1 = require("./TimeoutError");
- const utils_1 = require("./utils");
- class PendingOperation {
- constructor(timeoutMillis) {
- this.timeoutMillis = timeoutMillis;
- this.deferred = utils_1.defer();
- this.possibleTimeoutCause = null;
- this.promise = timeout(this.deferred.promise, timeoutMillis).catch(err => {
- if (err instanceof TimeoutError_1.TimeoutError) {
- if (this.possibleTimeoutCause) {
- err = new TimeoutError_1.TimeoutError(this.possibleTimeoutCause.message);
- }
- else {
- err = new TimeoutError_1.TimeoutError('operation timed out for an unknown reason');
- }
- }
- return Promise.reject(err);
- });
- }
- abort() {
- this.reject(new Error('aborted'));
- }
- reject(err) {
- this.deferred.reject(err);
- }
- resolve(value) {
- this.deferred.resolve(value);
- }
- }
- exports.PendingOperation = PendingOperation;
- function timeout(promise, time) {
- return new Promise((resolve, reject) => {
- const timeoutHandle = setTimeout(() => reject(new TimeoutError_1.TimeoutError()), time);
- promise
- .then(result => {
- clearTimeout(timeoutHandle);
- resolve(result);
- })
- .catch(err => {
- clearTimeout(timeoutHandle);
- reject(err);
- });
- });
- }
|