function handleError(err) {
// dispatch an error event so that we can display in errors in browsers
// that don't yet support unhandledrejection
- try {
- var evt = new Event('error');
- } catch (_eventError) {
- var evt = document.createEvent('Event');
- evt.initEvent('error', true, true);
+ if (window.onunhandledrejection === undefined) {
+ try {
+ var evt = new Event('error');
+ } catch (_eventError) {
+ var evt = document.createEvent('Event');
+ evt.initEvent('error', true, true);
+ }
+ evt.message = err.message;
+ if (err.fileName) {
+ evt.filename = err.fileName;
+ evt.lineno = err.lineNumber;
+ evt.colno = err.columnNumber;
+ } else if (err.sourceURL) {
+ evt.filename = err.sourceURL;
+ evt.lineno = err.line;
+ evt.colno = err.column;
+ }
+ evt.error = err;
+ window.dispatchEvent(evt);
}
- evt.message = err.message;
- evt.error = err;
- window.dispatchEvent(evt);
// throw so it still shows up in the console
throw err;