Codebase list node-es6-promise / f14c876
Update upstream source from tag 'upstream/4.2.8' Update to upstream version '4.2.8' with Debian dir f79dc259ce72426e64a0a3740ff41e65fcab5d4c Julien Puydt 4 years ago
5 changed file(s) with 43 addition(s) and 47 deletion(s). Raw diff Collapse all Expand all
00 # Master
1
2 # 4.2.5
3
4 * remove old try/catch performance hacks, modern runtimes do not require these tricks
15
26 # 4.2.4
37
3333 catch <U> (onRejected?: (error: any) => U | Thenable<U>): Promise<U>;
3434
3535 /**
36 * onSettled is invoked when/if the "promise" settles (either rejects or fulfills);
36 * onSettled is invoked when/if the "promise" settles (either rejects or fulfills).
37 * The returned promise is settled when the `Thenable` returned by `onFinally` settles;
38 * it is rejected if `onFinally` throws or rejects; otherwise it assumes the state of the
39 * original Promise.
3740 *
3841 * @param onFinally called when/if "promise" settles
42
3943 */
40 finally <U> (onFinally?: (callback: any) => U | Thenable<U>): Promise<U>;
44 finally (onFinally?: () => any | Thenable<any>): Promise<R>;
4145
4246 /**
4347 * Make a new promise from the thenable.
1717 const FULFILLED = 1;
1818 const REJECTED = 2;
1919
20 const TRY_CATCH_ERROR = { error: null };
21
2220 function selfFulfillment() {
2321 return new TypeError("You cannot resolve a promise with itself");
2422 }
2523
2624 function cannotReturnOwn() {
2725 return new TypeError('A promises callback cannot return that same promise.');
28 }
29
30 function getThen(promise) {
31 try {
32 return promise.then;
33 } catch(error) {
34 TRY_CATCH_ERROR.error = error;
35 return TRY_CATCH_ERROR;
36 }
3726 }
3827
3928 function tryThen(then, value, fulfillmentHandler, rejectionHandler) {
4635
4736 function handleForeignThenable(promise, thenable, then) {
4837 asap(promise => {
49 var sealed = false;
50 var error = tryThen(then, thenable, value => {
38 let sealed = false;
39 let error = tryThen(then, thenable, value => {
5140 if (sealed) { return; }
5241 sealed = true;
5342 if (thenable !== value) {
8675 maybeThenable.constructor.resolve === originalResolve) {
8776 handleOwnThenable(promise, maybeThenable);
8877 } else {
89 if (then === TRY_CATCH_ERROR) {
90 reject(promise, TRY_CATCH_ERROR.error);
91 TRY_CATCH_ERROR.error = null;
92 } else if (then === undefined) {
78 if (then === undefined) {
9379 fulfill(promise, maybeThenable);
9480 } else if (isFunction(then)) {
9581 handleForeignThenable(promise, maybeThenable, then);
10389 if (promise === value) {
10490 reject(promise, selfFulfillment());
10591 } else if (objectOrFunction(value)) {
106 handleMaybeThenable(promise, value, getThen(value));
92 let then;
93 try {
94 then = value.then;
95 } catch (error) {
96 reject(promise, error);
97 return;
98 }
99 handleMaybeThenable(promise, value, then);
107100 } else {
108101 fulfill(promise, value);
109102 }
173166 promise._subscribers.length = 0;
174167 }
175168
176
177 function tryCatch(callback, detail) {
178 try {
179 return callback(detail);
180 } catch(e) {
181 TRY_CATCH_ERROR.error = e;
182 return TRY_CATCH_ERROR;
183 }
184 }
185
186169 function invokeCallback(settled, promise, callback, detail) {
187170 let hasCallback = isFunction(callback),
188 value, error, succeeded, failed;
171 value, error, succeeded = true;
189172
190173 if (hasCallback) {
191 value = tryCatch(callback, detail);
192
193 if (value === TRY_CATCH_ERROR) {
194 failed = true;
195 error = value.error;
196 value.error = null;
197 } else {
198 succeeded = true;
174 try {
175 value = callback(detail);
176 } catch (e) {
177 succeeded = false;
178 error = e;
199179 }
200180
201181 if (promise === value) {
202182 reject(promise, cannotReturnOwn());
203183 return;
204184 }
205
206185 } else {
207186 value = detail;
208 succeeded = true;
209187 }
210188
211189 if (promise._state !== PENDING) {
212190 // noop
213191 } else if (hasCallback && succeeded) {
214192 resolve(promise, value);
215 } else if (failed) {
193 } else if (succeeded === false) {
216194 reject(promise, error);
217195 } else if (settled === FULFILLED) {
218196 fulfill(promise, value);
248226 export {
249227 nextId,
250228 makePromise,
251 getThen,
252229 noop,
253230 resolve,
254231 reject,
99 FULFILLED,
1010 REJECTED,
1111 PENDING,
12 getThen,
1312 handleMaybeThenable
1413 } from './-internal';
1514
6261 let { resolve } = c;
6362
6463 if (resolve === originalResolve) {
65 let then = getThen(entry);
64 let then;
65 let error;
66 let didError = false;
67 try {
68 then = entry.then;
69 } catch (e) {
70 didError = true;
71 error = e;
72 }
6673
6774 if (then === originalThen &&
6875 entry._state !== PENDING) {
7279 this._result[i] = entry;
7380 } else if (c === Promise) {
7481 let promise = new c(noop);
75 handleMaybeThenable(promise, entry, then);
82 if (didError) {
83 reject(promise, error);
84 } else {
85 handleMaybeThenable(promise, entry, then);
86 }
7687 this._willSettleAt(promise, i);
7788 } else {
7889 this._willSettleAt(new c(resolve => resolve(entry)), i);
00 {
11 "name": "es6-promise",
22 "description": "A lightweight library that provides tools for organizing asynchronous code",
3 "version": "4.2.6",
3 "version": "4.2.8",
44 "author": "Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)",
55 "browser": {
66 "vertx": false