function traceKitWindowOnError(message, url, lineNo, colNo, ex) {
	        var stack = null;

	        if (lastExceptionStack) {
	            TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message);
	            processLastException();
	        } else if (ex) {
	            // New chrome and blink send along a real error object
	            // Let's just report that like a normal error.
	            // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror
	            stack = TraceKit.computeStackTrace(ex);
	            notifyHandlers(stack, true);
	        } else {
	            var location = {
	                'url': url,
	                'line': lineNo,
	                'column': colNo
	            };

	            var name = undefined;
	            var msg = message; // must be new var or will modify original `arguments`
	            var groups;
	            if ({}.toString.call(message) === '[object String]') {
	                var groups = message.match(ERROR_TYPES_RE);
	                if (groups) {
	                    name = groups[1];
	                    msg = groups[2];
	                }
	            }

	            location.func = UNKNOWN_FUNCTION;

	            stack = {
	                'name': name,
	                'message': msg,
	                'url': getLocationHref(),
	                'stack': [location]
	            };
	            notifyHandlers(stack, true);
	        }

	        if (_oldOnerrorHandler) {
	            return _oldOnerrorHandler.apply(this, arguments);
	        }

	        return false;
	    }
Ensures all global unhandled exceptions are recorded.
Supported by Gecko and IE.
@param {string} message Error message.
@param {string} url URL of script that generated the exception.
@param {(number|string)} lineNo The line number at which the error
occurred.
@param {?(number|string)} colNo The column number at which the error
occurred.
@param {?Error} ex The actual Error object.