1 | "use strict";
|
2 | module.exports = function(Promise) {
|
3 | function PromiseInspection(promise) {
|
4 | if (promise !== undefined) {
|
5 | promise = promise._target();
|
6 | this._bitField = promise._bitField;
|
7 | this._settledValueField = promise._isFateSealed()
|
8 | ? promise._settledValue() : undefined;
|
9 | }
|
10 | else {
|
11 | this._bitField = 0;
|
12 | this._settledValueField = undefined;
|
13 | }
|
14 | }
|
15 |
|
16 | PromiseInspection.prototype._settledValue = function() {
|
17 | return this._settledValueField;
|
18 | };
|
19 |
|
20 | var value = PromiseInspection.prototype.value = function () {
|
21 | if (!this.isFulfilled()) {
|
22 | throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\u000a\u000a See http://goo.gl/MqrFmX\u000a");
|
23 | }
|
24 | return this._settledValue();
|
25 | };
|
26 |
|
27 | var reason = PromiseInspection.prototype.error =
|
28 | PromiseInspection.prototype.reason = function () {
|
29 | if (!this.isRejected()) {
|
30 | throw new TypeError("cannot get rejection reason of a non-rejected promise\u000a\u000a See http://goo.gl/MqrFmX\u000a");
|
31 | }
|
32 | return this._settledValue();
|
33 | };
|
34 |
|
35 | var isFulfilled = PromiseInspection.prototype.isFulfilled = function() {
|
36 | return (this._bitField & 33554432) !== 0;
|
37 | };
|
38 |
|
39 | var isRejected = PromiseInspection.prototype.isRejected = function () {
|
40 | return (this._bitField & 16777216) !== 0;
|
41 | };
|
42 |
|
43 | var isPending = PromiseInspection.prototype.isPending = function () {
|
44 | return (this._bitField & 50397184) === 0;
|
45 | };
|
46 |
|
47 | var isResolved = PromiseInspection.prototype.isResolved = function () {
|
48 | return (this._bitField & 50331648) !== 0;
|
49 | };
|
50 |
|
51 | PromiseInspection.prototype.isCancelled = function() {
|
52 | return (this._bitField & 8454144) !== 0;
|
53 | };
|
54 |
|
55 | Promise.prototype.__isCancelled = function() {
|
56 | return (this._bitField & 65536) === 65536;
|
57 | };
|
58 |
|
59 | Promise.prototype._isCancelled = function() {
|
60 | return this._target().__isCancelled();
|
61 | };
|
62 |
|
63 | Promise.prototype.isCancelled = function() {
|
64 | return (this._target()._bitField & 8454144) !== 0;
|
65 | };
|
66 |
|
67 | Promise.prototype.isPending = function() {
|
68 | return isPending.call(this._target());
|
69 | };
|
70 |
|
71 | Promise.prototype.isRejected = function() {
|
72 | return isRejected.call(this._target());
|
73 | };
|
74 |
|
75 | Promise.prototype.isFulfilled = function() {
|
76 | return isFulfilled.call(this._target());
|
77 | };
|
78 |
|
79 | Promise.prototype.isResolved = function() {
|
80 | return isResolved.call(this._target());
|
81 | };
|
82 |
|
83 | Promise.prototype.value = function() {
|
84 | return value.call(this._target());
|
85 | };
|
86 |
|
87 | Promise.prototype.reason = function() {
|
88 | var target = this._target();
|
89 | target._unsetRejectionIsUnhandled();
|
90 | return reason.call(target);
|
91 | };
|
92 |
|
93 | Promise.prototype._value = function() {
|
94 | return this._settledValue();
|
95 | };
|
96 |
|
97 | Promise.prototype._reason = function() {
|
98 | this._unsetRejectionIsUnhandled();
|
99 | return this._settledValue();
|
100 | };
|
101 |
|
102 | Promise.PromiseInspection = PromiseInspection;
|
103 | };
|