bluebird
bluebird copied to clipboard
v3.7.2 errors when setTimeout is not defined
- What version of bluebird is the issue happening on?
v3.7.2
- What platform and version? (For example Node.js 0.12 or Google Chrome 32)
GraalVM JS 20.1.0 (ES2020 but without Node.js APIs)
- Did this issue happen with earlier version of bluebird?
No
Bluebird v3.7.2 throws an exception because setTimeout isn't defined. In v3.7.1 this didn't happen, presumably because of the check for typeof document === "object"
etc.
org.graalvm.polyglot.PolyglotException: ReferenceError: setTimeout is not defined
at <js>.deferUnhandledRejectionCheck(search.js:49866) ~[?:?]
at <js>.Promise._ensurePossibleRejectionHandled(search.js:49888) ~[?:?]
at <js>.Promise._reject(search.js:52887) ~[?:?]
at <js>.Promise._rejectCallback(search.js:52677) ~[?:?]
at <js>.Promise.rejected(search.js:52385) ~[?:?]
My mistake, this also happens in v3.7.1, I just thought it appeared in v3.7.2
After some more debugging, I found the error in my code leading to this. I had in one case:
const f = Promise.reject(new Error('foo'))
when I intended
const f = () => Promise.reject(new Error('foo'))
So at this point this issue is poorly titled and described, because it isn't related to the changes in v3.7.2.
Still, it seems like bluebird assumes that setTimeout
will be available, but the JS environment might not provide it. Would it make sense to conditionalize the unhandled rejection check on the presence of setTimeout
?