BluebirdShimPromise: Add value() and fix isResolved() semantics

- value() is used in noWait export translation

- isResolved() technically means fulfilled or rejected -- unclear if we
  ever depended on that, but it might as well be correct
This commit is contained in:
Dan Stillman 2025-07-29 00:47:33 -04:00
parent dd5667c09b
commit d797c7a4d8

View file

@ -20,17 +20,33 @@ export class BluebirdShimPromise extends Promise {
let returnValue = fn.apply(this, args);
let promise;
let isResolved = false;
let isFulfilled = false;
if (returnValue && returnValue.then) {
promise = returnValue;
}
else {
promise = Promise.resolve(returnValue);
isResolved = true;
isFulfilled = true;
}
if (typeof promise.isResolved === 'undefined') {
promise.then(() => isResolved = true, () => {});
promise.then(
() => {
isResolved = true;
isFulfilled = true;
},
() => isResolved = true
);
promise.isResolved = () => isResolved;
}
if (promise.value === undefined) {
promise.value = () => {
if (!isFulfilled) {
throw new Error("value() called on unfulfilled promise");
}
return returnValue;
};
}
return promise;
}
catch (e) {