Stack tagging API works

Running test: simpleTaskLogsCorrectAsyncTrace
---------- console.trace: Inside run ----------
runner (simpleTaskLogsCorrectAsyncTrace.js:4:14)
simpleTaskLogsCorrectAsyncTrace (simpleTaskLogsCorrectAsyncTrace.js:3:9)
(anonymous) (simpleTaskLogsCorrectAsyncTrace.js:6:4)
-- Task --
foo (simpleTaskLogsCorrectAsyncTrace.js:1:36)
simpleTaskLogsCorrectAsyncTrace (simpleTaskLogsCorrectAsyncTrace.js:2:17)
(anonymous) (simpleTaskLogsCorrectAsyncTrace.js:6:4)

Running test: nestedTasksLogCorrectAsyncTrace
---------- console.trace: Inside runInner ----------
runInner (nestedTasksLogCorrectAsyncTrace.js:5:16)
runOuter (nestedTasksLogCorrectAsyncTrace.js:4:16)
nestedTasksLogCorrectAsyncTrace (nestedTasksLogCorrectAsyncTrace.js:2:14)
(anonymous) (nestedTasksLogCorrectAsyncTrace.js:8:4)
-- Inner Task --
runOuter (nestedTasksLogCorrectAsyncTrace.js:3:32)
nestedTasksLogCorrectAsyncTrace (nestedTasksLogCorrectAsyncTrace.js:2:14)
(anonymous) (nestedTasksLogCorrectAsyncTrace.js:8:4)
-- Outer Task --
nestedTasksLogCorrectAsyncTrace (nestedTasksLogCorrectAsyncTrace.js:1:30)
(anonymous) (nestedTasksLogCorrectAsyncTrace.js:8:4)

Running test: setTimeoutWorksCorrectly
---------- console.trace: Inside runInner ----------
runInner (setTimeoutWorksCorrectly.js:6:18)
(anonymous) (setTimeoutWorksCorrectly.js:5:18)
-- Inner Task --
(anonymous) (setTimeoutWorksCorrectly.js:4:34)
-- setTimeout --
(anonymous) (setTimeoutWorksCorrectly.js:3:30)
runOuter (setTimeoutWorksCorrectly.js:3:13)
setTimeoutWorksCorrectly (setTimeoutWorksCorrectly.js:2:20)
(anonymous) (setTimeoutWorksCorrectly.js:11:4)
-- Outer Task --
setTimeoutWorksCorrectly (setTimeoutWorksCorrectly.js:1:30)
(anonymous) (setTimeoutWorksCorrectly.js:11:4)

Running test: runForwardsTheReturnValue
---------- console.log: 42 ----------
runForwardsTheReturnValue (runForwardsTheReturnValue.js:3:12)
(anonymous) (runForwardsTheReturnValue.js:4:4)

Running test: runWorksWithAsyncPayloads
---------- console.log: 42 ----------
runWorksWithAsyncPayloads (runWorksWithAsyncPayloads.js:3:12)

Running test: runWorksWithGenerators
---------- console.log: 42 ----------
runWorksWithGenerators (runWorksWithGenerators.js:3:12)
(anonymous) (runWorksWithGenerators.js:4:4)

Running test: runCanBeCalledMultipleTimes
---------- console.log: First run ----------
(anonymous) (runCanBeCalledMultipleTimes.js:2:27)
runCanBeCalledMultipleTimes (runCanBeCalledMultipleTimes.js:2:9)
(anonymous) (runCanBeCalledMultipleTimes.js:4:4)
---------- console.log: Second run ----------
(anonymous) (runCanBeCalledMultipleTimes.js:3:27)
runCanBeCalledMultipleTimes (runCanBeCalledMultipleTimes.js:3:9)
(anonymous) (runCanBeCalledMultipleTimes.js:4:4)

Running test: runForwardsExceptions
Expected exception: 
{
    className : Error
    description : Error: Thrown from task.run     at runForwardsExceptions.js:4:13     at runForwardsExceptions (runForwardsExceptions.js:3:10)     at runForwardsExceptions.js:6:5
    objectId : <objectId>
    subtype : error
    type : object
}

Running test: recursivelyCalledRunDoesntCrash
---------- console.trace: Inside nestedRunOuter ----------
nestedRunOuter (recursivelyCalledRunDoesntCrash.js:6:18)
runInner (recursivelyCalledRunDoesntCrash.js:5:18)
runOuter (recursivelyCalledRunDoesntCrash.js:4:16)
recursivelyCalledRunDoesntCrash (recursivelyCalledRunDoesntCrash.js:2:14)
(anonymous) (recursivelyCalledRunDoesntCrash.js:10:4)
-- Outer Task --
recursivelyCalledRunDoesntCrash (recursivelyCalledRunDoesntCrash.js:1:30)
(anonymous) (recursivelyCalledRunDoesntCrash.js:10:4)

Running test: scheduleThrowsAnErrorWhenCalledWithoutAnArgument
Expected exception: 
{
    className : Error
    description : Error: First argument must be a non-empty string.     at scheduleThrowsAnErrorWhenCalledWithoutAnArgument (scheduleThrowsAnErrorWhenCalledWithoutAnArgument.js:2:13)     at scheduleThrowsAnErrorWhenCalledWithoutAnArgument.js:3:5
    objectId : <objectId>
    subtype : error
    type : object
}

Running test: scheduleThrowsAnErrorWhenCalledWithAnEmptyString
Expected exception: 
{
    className : Error
    description : Error: First argument must be a non-empty string.     at scheduleThrowsAnErrorWhenCalledWithAnEmptyString (scheduleThrowsAnErrorWhenCalledWithAnEmptyString.js:2:13)     at scheduleThrowsAnErrorWhenCalledWithAnEmptyString.js:3:5
    objectId : <objectId>
    subtype : error
    type : object
}

Running test: runThrowsAnErrorWhenCalledWithoutAnArgument
Expected exception: 
{
    className : Error
    description : Error: First argument must be a function.     at runThrowsAnErrorWhenCalledWithoutAnArgument (runThrowsAnErrorWhenCalledWithoutAnArgument.js:3:10)     at runThrowsAnErrorWhenCalledWithoutAnArgument.js:4:5
    objectId : <objectId>
    subtype : error
    type : object
}

Running test: runThrowsAnErrorWhenCalledWithNonFunction
Expected exception: 
{
    className : Error
    description : Error: First argument must be a function.     at runThrowsAnErrorWhenCalledWithNonFunction (runThrowsAnErrorWhenCalledWithNonFunction.js:3:10)     at runThrowsAnErrorWhenCalledWithNonFunction.js:4:5
    objectId : <objectId>
    subtype : error
    type : object
}

Running test: runThrowsAnErrorWhenCalledWithNullReceiver
Expected exception: 
{
    className : Error
    description : Error: 'run' called with illegal receiver.     at runThrowsAnErrorWhenCalledWithNullReceiver (runThrowsAnErrorWhenCalledWithNullReceiver.js:3:14)     at runThrowsAnErrorWhenCalledWithNullReceiver.js:4:5
    objectId : <objectId>
    subtype : error
    type : object
}

Running test: runThrowsAnErrorWhenCalledWithIllegalReceiver
Expected exception: 
{
    className : Error
    description : Error: 'run' called with illegal receiver.     at runThrowsAnErrorWhenCalledWithIllegalReceiver (runThrowsAnErrorWhenCalledWithIllegalReceiver.js:3:14)     at runThrowsAnErrorWhenCalledWithIllegalReceiver.js:4:5
    objectId : <objectId>
    subtype : error
    type : object
}
