"use strict"; module.exports = function(Promise) { function PromiseInspection(promise) { if (promise !== undefined) { promise = promise._target(); this._bitField = promise._bitField; this._settledValue = promise._settledValue; } else { this._bitField = 0; this._settledValue = undefined; } } 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/hc1DLj\u000a"); } return this._settledValue; }; 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/hPuiwB\u000a"); } return this._settledValue; }; PromiseInspection.prototype.isFulfilled = Promise.prototype._isFulfilled = function () { return (this._bitField & 268435456) > 0; }; PromiseInspection.prototype.isRejected = Promise.prototype._isRejected = function () { return (this._bitField & 134217728) > 0; }; PromiseInspection.prototype.isPending = Promise.prototype._isPending = function () { return (this._bitField & 402653184) === 0; }; PromiseInspection.prototype.isResolved = Promise.prototype._isResolved = function () { return (this._bitField & 402653184) > 0; }; Promise.prototype.isPending = function() { return this._target()._isPending(); }; Promise.prototype.isRejected = function() { return this._target()._isRejected(); }; Promise.prototype.isFulfilled = function() { return this._target()._isFulfilled(); }; Promise.prototype.isResolved = function() { return this._target()._isResolved(); }; Promise.prototype._value = function() { return this._settledValue; }; Promise.prototype._reason = function() { this._unsetRejectionIsUnhandled(); return this._settledValue; }; Promise.prototype.value = function() { var target = this._target(); if (!target.isFulfilled()) { throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\u000a\u000a See http://goo.gl/hc1DLj\u000a"); } return target._settledValue; }; Promise.prototype.reason = function() { var target = this._target(); if (!target.isRejected()) { throw new TypeError("cannot get rejection reason of a non-rejected promise\u000a\u000a See http://goo.gl/hPuiwB\u000a"); } target._unsetRejectionIsUnhandled(); return target._settledValue; }; Promise.PromiseInspection = PromiseInspection; };