'use strict'; let isWebWorker = (typeof WorkerGlobalScope !== "undefined"); let isNode = (typeof process !== "undefined" && process.browser !== true); let isBrowser = (!isNode && !isWebWorker && typeof document !== "undefined"); let environmentName = ""; if (isWebWorker) { environmentName = "WebWorker"; } else if (isBrowser) { environmentName = "Browser"; } else if (isNode) { environmentName = "Node"; } else { environmentName = "Unknown environment"; } function supportsWebWorkers() { return !!window.Worker; } if (isBrowser || isWebWorker) { const debug = require("debug"); debug.enable("*"); } const unhandledRejection = require("../"); let emitter = unhandledRejection(); emitter.on("unhandledRejection", (error, promise) => { console.log(`Caught an error in <${environmentName}>! ${error.message}`) }); const BPromise = require("bluebird"); const QPromise = require("q"); const WPromise = require("when"); const YPromise = require("yaku"); /* Workaround for stefanpenner/es6-promise#183 */ let _nativePromise = Promise; const EPromise = require("es6-promise").Promise; Promise = _nativePromise; Promise.resolve().then(() => { console.log("Throwing Native...") throw new Error("Native") }); BPromise.resolve().then(() => { console.log("Throwing Bluebird...") throw new Error("Bluebird") }); QPromise.resolve().then(() => { console.log("Throwing Q...") throw new Error("Q") }); WPromise.resolve().then(() => { console.log("Throwing WhenJS...") throw new Error("WhenJS") }); YPromise.resolve().then(() => { console.log("Throwing Yaku...") throw new Error("Yaku") }); /* Disabled until stefanpenner/es6-promise#70 is resolved EPromise.resolve().then(() => { console.log("Throwing es6-promise...") throw new Error("es6-promise") }); */ if (isBrowser && supportsWebWorkers) { let worker = new Worker("test.webworker.js"); }