You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
103 lines
2.7 KiB
103 lines
2.7 KiB
"use strict"; |
|
module.exports = function(Promise) { |
|
function PromiseInspection(promise) { |
|
if (promise !== undefined) { |
|
promise = promise._target(); |
|
this._bitField = promise._bitField; |
|
this._settledValueField = promise._isFateSealed() |
|
? promise._settledValue() : undefined; |
|
} |
|
else { |
|
this._bitField = 0; |
|
this._settledValueField = undefined; |
|
} |
|
} |
|
|
|
PromiseInspection.prototype._settledValue = function() { |
|
return this._settledValueField; |
|
}; |
|
|
|
var value = PromiseInspection.prototype.value = function () { |
|
if (!this.isFulfilled()) { |
|
throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\u000a\u000a See http://goo.gl/MqrFmX\u000a"); |
|
} |
|
return this._settledValue(); |
|
}; |
|
|
|
var reason = PromiseInspection.prototype.error = |
|
PromiseInspection.prototype.reason = function () { |
|
if (!this.isRejected()) { |
|
throw new TypeError("cannot get rejection reason of a non-rejected promise\u000a\u000a See http://goo.gl/MqrFmX\u000a"); |
|
} |
|
return this._settledValue(); |
|
}; |
|
|
|
var isFulfilled = PromiseInspection.prototype.isFulfilled = function() { |
|
return (this._bitField & 33554432) !== 0; |
|
}; |
|
|
|
var isRejected = PromiseInspection.prototype.isRejected = function () { |
|
return (this._bitField & 16777216) !== 0; |
|
}; |
|
|
|
var isPending = PromiseInspection.prototype.isPending = function () { |
|
return (this._bitField & 50397184) === 0; |
|
}; |
|
|
|
var isResolved = PromiseInspection.prototype.isResolved = function () { |
|
return (this._bitField & 50331648) !== 0; |
|
}; |
|
|
|
PromiseInspection.prototype.isCancelled = function() { |
|
return (this._bitField & 8454144) !== 0; |
|
}; |
|
|
|
Promise.prototype.__isCancelled = function() { |
|
return (this._bitField & 65536) === 65536; |
|
}; |
|
|
|
Promise.prototype._isCancelled = function() { |
|
return this._target().__isCancelled(); |
|
}; |
|
|
|
Promise.prototype.isCancelled = function() { |
|
return (this._target()._bitField & 8454144) !== 0; |
|
}; |
|
|
|
Promise.prototype.isPending = function() { |
|
return isPending.call(this._target()); |
|
}; |
|
|
|
Promise.prototype.isRejected = function() { |
|
return isRejected.call(this._target()); |
|
}; |
|
|
|
Promise.prototype.isFulfilled = function() { |
|
return isFulfilled.call(this._target()); |
|
}; |
|
|
|
Promise.prototype.isResolved = function() { |
|
return isResolved.call(this._target()); |
|
}; |
|
|
|
Promise.prototype.value = function() { |
|
return value.call(this._target()); |
|
}; |
|
|
|
Promise.prototype.reason = function() { |
|
var target = this._target(); |
|
target._unsetRejectionIsUnhandled(); |
|
return reason.call(target); |
|
}; |
|
|
|
Promise.prototype._value = function() { |
|
return this._settledValue(); |
|
}; |
|
|
|
Promise.prototype._reason = function() { |
|
this._unsetRejectionIsUnhandled(); |
|
return this._settledValue(); |
|
}; |
|
|
|
Promise.PromiseInspection = PromiseInspection; |
|
};
|
|
|