You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
1.8 KiB
JavaScript
80 lines
1.8 KiB
JavaScript
'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");
|
|
} |