CONSOLE MESSAGE: TypeError: undefined is not an object (evaluating '[].x.x')
Ensure we can pause in Workers.


== Running test suite: Worker.Debugger.Pause
-- Running test case: Worker.Debugger.Pause.DebuggerStatement
PASS: Paused
PASS: Should be paused in a Worker CallFrame.
PASS: Pause reason should be a debugger statement.
PAUSE AT triggerDebuggerStatement:3:5
      0    function triggerDebuggerStatement() {
      1        let before = 1;
 ->   2        |debugger;
      3        let after = 2;
      4    }
      5



-- Running test case: Worker.Debugger.Pause.Breakpoint
PASS: Paused
PASS: Should be paused in a Worker CallFrame.
PASS: Pause reason should be a breakpoint.
PAUSE AT triggerBreakpoint:9:5
      5
      6    function triggerBreakpoint() {
      7        let alpha = 1;
 ->   8        |let beta = 2; // BREAKPOINT
      9        let gamma = 3;
     10    }
     11



-- Running test case: Worker.Debugger.Pause.Exception
PASS: Paused
PASS: Should be paused in a Worker CallFrame.
PASS: Pause reason should be an exception.
PAUSE AT triggerException:14:9
     10    }
     11
     12    function triggerException() {
 ->  13        [].x|.x;
     14    }
     15
     16    function triggerAssertion() {


Uncaught exception in test page: TypeError: undefined is not an object (evaluating '[].x.x') [worker-debugger-pause.js:14]

-- Running test case: Worker.Debugger.Pause.Assert
PASS: Paused
PASS: Should be paused in a Worker CallFrame.
PASS: Pause reason should be an exception.
PAUSE AT triggerAssertion:18:19
     14    }
     15
     16    function triggerAssertion() {
 ->  17        console.assert|(false, "Assertion");
     18    }
     19
     20    onmessage = function(event) {



