Tests that debugger will step through Promise handlers while not stepping into V8 internal scripts.

Set timer for test function.
Call stack:
    0) p1 (debugger-step-through-promises.js:19)
    [Promise.then]
    0) testFunction (debugger-step-through-promises.js:16)
    [setTimeout]
    0) scheduleTestFunction <omitted>
    <... skipped remaining frames ...>

Executing StepInto...
Call stack:
    0) p1 (debugger-step-through-promises.js:20)
    [Promise.then]
    0) testFunction (debugger-step-through-promises.js:16)
    [setTimeout]
    0) scheduleTestFunction <omitted>
    <... skipped remaining frames ...>

Executing StepInto...
Call stack:
    0) p2 (debugger-step-through-promises.js:24)
    [Promise.then]
    0) testFunction (debugger-step-through-promises.js:21)
    [setTimeout]
    0) scheduleTestFunction <omitted>
    <... skipped remaining frames ...>

Executing StepOver...
Call stack:
    0) p2 (debugger-step-through-promises.js:24)
    [Promise.then]
    0) testFunction (debugger-step-through-promises.js:21)
    [setTimeout]
    0) scheduleTestFunction <omitted>
    <... skipped remaining frames ...>

Executing StepOver...
Call stack:
    0) p3 (debugger-step-through-promises.js:29)
    [Promise.then]
    0) testFunction (debugger-step-through-promises.js:26)
    [setTimeout]
    0) scheduleTestFunction <omitted>
    <... skipped remaining frames ...>

Executing StepOver...
Call stack:
    0) p3 (debugger-step-through-promises.js:29)
    [Promise.then]
    0) testFunction (debugger-step-through-promises.js:26)
    [setTimeout]
    0) scheduleTestFunction <omitted>
    <... skipped remaining frames ...>


