function report(ex, rethrow) {
	        var args = _slice.call(arguments, 1);
	        if (lastExceptionStack) {
	            if (lastException === ex) {
	                return; // already caught by an inner catch block, ignore
	            } else {
	              processLastException();
	            }
	        }

	        var stack = TraceKit.computeStackTrace(ex);
	        lastExceptionStack = stack;
	        lastException = ex;
	        lastArgs = args;

	        // If the stack trace is incomplete, wait for 2 seconds for
	        // slow slow IE to see if onerror occurs or not before reporting
	        // this exception; otherwise, we will end up with an incomplete
	        // stack trace
	        setTimeout(function () {
	            if (lastException === ex) {
	                processLastException();
	            }
	        }, (stack.incomplete ? 2000 : 0));

	        if (rethrow !== false) {
	            throw ex; // re-throw to propagate to the top level (and cause window.onerror)
	        }
	    }
Reports an unhandled Error to TraceKit.
@param {Error} ex
@param {?boolean} rethrow If false, do not re-throw the exception.
Only used for window.onerror to not cause an infinite loop of
rethrowing.