| Index: test/mjsunit/es6/debug-stepin-microtasks.js | 
| diff --git a/test/mjsunit/es6/debug-stepin-promises.js b/test/mjsunit/es6/debug-stepin-microtasks.js | 
| similarity index 58% | 
| rename from test/mjsunit/es6/debug-stepin-promises.js | 
| rename to test/mjsunit/es6/debug-stepin-microtasks.js | 
| index 2db6b66946302cab0458c0397c1682667cd2f08e..8dbdb3457ab8e6828e3adc9b4f6cfb5caf2fd05d 100644 | 
| --- a/test/mjsunit/es6/debug-stepin-promises.js | 
| +++ b/test/mjsunit/es6/debug-stepin-microtasks.js | 
| @@ -7,27 +7,29 @@ | 
| Debug = debug.Debug | 
| var exception = null; | 
| var break_count = 0; | 
| -var expected_breaks = 7; | 
| +var expected_breaks = -1; | 
|  | 
| function listener(event, exec_state, event_data, data) { | 
| try { | 
| if (event == Debug.DebugEvent.Break) { | 
| assertTrue(exec_state.frameCount() != 0, "FAIL: Empty stack trace"); | 
| +      if (!break_count) { | 
| +        // Count number of expected breakpoints in this source file. | 
| +        var source_text = exec_state.frame(0).func().script().source(); | 
| +        expected_breaks = source_text.match(/\/\/\s*Break\s+\d+\./g).length; | 
| +        print("Expected breaks: " + expected_breaks); | 
| +      } | 
| var source = exec_state.frame(0).sourceLineText(); | 
| print("paused at: " + source); | 
| assertTrue(source.indexOf("// Break " + break_count + ".") > 0, | 
| -                 "Unexpected pause at: " + source); | 
| +                 "Unexpected pause at: " + source + "\n" + | 
| +                 "Expected: // Break " + break_count + "."); | 
| if (source.indexOf("StepOver.") !== -1) { | 
| exec_state.prepareStep(Debug.StepAction.StepNext, 1); | 
| } else { | 
| exec_state.prepareStep(Debug.StepAction.StepIn, 1); | 
| } | 
| ++break_count; | 
| -    } else if (event == Debug.DebugEvent.AsyncTaskEvent && | 
| -               event_data.type() === "willHandle" && | 
| -               event_data.name() !== "Object.observe" && | 
| -               break_count > 0) { | 
| -      exec_state.prepareStep(Debug.StepAction.StepIn, 1); | 
| } | 
| } catch (e) { | 
| exception = e; | 
| @@ -42,30 +44,49 @@ Promise.resolve(42) | 
| .then(Object) // Should skip stepping into native. | 
| .then(Boolean) // Should skip stepping into native. | 
| .then(promise2) | 
| -  .then(undefined, promise3) | 
| +  .catch(promise3) | 
| .catch(function(e) { | 
| %AbortJS("FAIL: uncaught exception " + e); | 
| }); | 
|  | 
| -function promise1() | 
| -{ | 
| +function promise1() { | 
| debugger; // Break 0. | 
| return exception || 1; // Break 1. | 
| } // Break 2. | 
|  | 
| -function promise2() | 
| -{ | 
| +function promise2() { | 
| throw new Error; // Break 3. | 
| } | 
|  | 
| -function promise3() | 
| -{ | 
| -  finalize(); // Break 4. StepOver. | 
| +function promise3() { | 
| +  installObservers(); // Break 4. StepOver. | 
| return break_count; // Break 5. | 
| } // Break 6. | 
|  | 
| -function finalize() | 
| -{ | 
| +function installObservers() { | 
| +  var dummy = {}; | 
| +  Object.observe(dummy, observer1); | 
| +  Object.observe(dummy, Object); // Should skip stepping into native. | 
| +  Object.observe(dummy, Boolean); // Should skip stepping into native. | 
| +  Object.observe(dummy, observer2); | 
| +  dummy.foo = 1; | 
| +} | 
| + | 
| +function observer1() { | 
| +  return exception || 3; // Break 7. | 
| +} // Break 8. | 
| + | 
| +function observer2() { | 
| +  Promise.resolve().then(promise4); // Break 9. StepOver. | 
| +  return break_count + 1; // Break 10. | 
| +} // Break 11. | 
| + | 
| +function promise4() { | 
| +  finalize(); // Break 12. StepOver. | 
| +  return 0; // Break 13. | 
| +} // Break 14. StepOver. | 
| + | 
| +function finalize() { | 
| var dummy = {}; | 
| Object.observe(dummy, function() { | 
| if (expected_breaks !== break_count) { | 
|  |