Checks basic ES6 modules support.
{
    method : Debugger.scriptParsed
    params : {
        endColumn : 17
        endLine : 5
        executionContextId : <executionContextId>
        hasSourceURL : false
        hash : 395a588e3dc4c9155d342cb169bcd60d5b96c1a1
        isLiveEdit : false
        isModule : true
        length : 83
        scriptId : <scriptId>
        sourceMapURL : 
        startColumn : 0
        startLine : 0
        url : module1
    }
}
{
    method : Debugger.scriptParsed
    params : {
        endColumn : 17
        endLine : 5
        executionContextId : <executionContextId>
        hasSourceURL : false
        hash : 15448dfe629fbe4306eae7194754692706c6d6ba
        isLiveEdit : false
        isModule : true
        length : 84
        scriptId : <scriptId>
        sourceMapURL : 
        startColumn : 0
        startLine : 0
        url : module2
    }
}
{
    method : Debugger.scriptParsed
    params : {
        endColumn : 0
        endLine : 11
        executionContextId : <executionContextId>
        hasSourceURL : false
        hash : 2e8186096446efdc472a6e0559ea22216a664cb5
        isLiveEdit : false
        isModule : true
        length : 286
        scriptId : <scriptId>
        sourceMapURL : 
        startColumn : 0
        startLine : 0
        url : module3
    }
}
console.log(module1)
foo (module1:2:10)
(anonymous) (module3:5:12)

console.log(42)
(anonymous) (module3:5:8)

console.log(module2)
foo (module2:2:10)
(anonymous) (module3:6:12)

console.log(239)
(anonymous) (module3:6:8)

{
    method : Debugger.paused
    params : {
        callFrames : [
            [0] : {
                callFrameId : <callFrameId>
                functionLocation : {
                    columnNumber : 0
                    lineNumber : 0
                    scriptId : <scriptId>
                }
                functionName : 
                location : {
                    columnNumber : 0
                    lineNumber : 9
                    scriptId : <scriptId>
                }
                scopeChain : [
                    [0] : {
                        endLocation : {
                            columnNumber : 0
                            lineNumber : 11
                            scriptId : <scriptId>
                        }
                        object : {
                            className : Object
                            description : Object
                            objectId : <objectId>
                            type : object
                        }
                        startLocation : {
                            columnNumber : 0
                            lineNumber : 0
                            scriptId : <scriptId>
                        }
                        type : module
                    }
                    [1] : {
                        object : {
                            className : global
                            description : global
                            objectId : <objectId>
                            type : object
                        }
                        type : global
                    }
                ]
                this : {
                    type : undefined
                }
                url : module3
            }
        ]
        hitBreakpoints : [
        ]
        reason : other
    }
}
{
    id : <messageId>
    result : {
        result : [
            [0] : {
                configurable : true
                enumerable : true
                isOwn : true
                name : foo1
                value : {
                    className : Function
                    description : function foo() {   console.log('module1');   return 42; }
                    objectId : <objectId>
                    type : function
                }
                writable : true
            }
            [1] : {
                configurable : true
                enumerable : true
                isOwn : true
                name : foo2
                value : {
                    className : Function
                    description : function foo() {   console.log('module2');   return 239; }
                    objectId : <objectId>
                    type : function
                }
                writable : true
            }
            [2] : {
                configurable : true
                enumerable : true
                isOwn : true
                name : foo3
                value : {
                    className : Module
                    description : Module
                    objectId : <objectId>
                    type : object
                }
                writable : true
            }
            [3] : {
                configurable : true
                enumerable : true
                isOwn : true
                name : a1
                value : {
                    description : 1
                    type : number
                    value : 1
                }
                writable : true
            }
            [4] : {
                configurable : true
                enumerable : true
                isOwn : true
                name : a2
                value : {
                    description : 2
                    type : number
                    value : 2
                }
                writable : true
            }
        ]
    }
}
{
    method : Debugger.scriptFailedToParse
    params : {
        endColumn : 1
        endLine : 0
        executionContextId : <executionContextId>
        hasSourceURL : false
        hash : 021647ffab1f4e4e82675bc4cd924d3481abe278
        isModule : true
        length : 1
        scriptId : <scriptId>
        sourceMapURL : 
        startColumn : 0
        startLine : 0
        url : module4
    }
}
{
    method : Runtime.exceptionThrown
    params : {
        exceptionDetails : {
            columnNumber : 0
            exception : {
                className : SyntaxError
                description : SyntaxError: Unexpected token '}'
                objectId : <objectId>
                preview : {
                    description : SyntaxError: Unexpected token '}'
                    overflow : false
                    properties : [
                        [0] : {
                            name : stack
                            type : string
                            value : SyntaxError: Unexpected token '}'
                        }
                        [1] : {
                            name : message
                            type : string
                            value : Unexpected token '}'
                        }
                    ]
                    subtype : error
                    type : object
                }
                subtype : error
                type : object
            }
            exceptionId : <exceptionId>
            executionContextId : <executionContextId>
            lineNumber : 0
            scriptId : <scriptId>
            text : Uncaught SyntaxError: Unexpected token '}'
            url : module4
        }
        timestamp : <timestamp>
    }
}
queryObjects returns Array(N)
