Import Cobalt 13.102542

Change-Id: I6bda7b03a2e33edfd735efcb981e2a731696b90d
diff --git a/src/v8/test/debugger/debug/debug-step-microtask.js b/src/v8/test/debugger/debug/debug-step-microtask.js
new file mode 100644
index 0000000..258f235
--- /dev/null
+++ b/src/v8/test/debugger/debug/debug-step-microtask.js
@@ -0,0 +1,52 @@
+// Copyright 2017 the V8 project authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+Debug = debug.Debug
+var exception = null;
+var log = [];
+
+function listener(event, exec_state, event_data, data) {
+  try {
+    if (event == Debug.DebugEvent.Break) {
+      var line = exec_state.frame(0).sourceLineText();
+      log.push(line);
+      if (!/STOP/.test(line)) {
+        exec_state.prepareStep(Debug.StepAction.StepIn);
+      }
+    }
+  } catch (e) {
+    exception = e;
+  }
+};
+
+Debug.setListener(listener);
+
+Promise.resolve().then(
+function() {
+  print(1);
+}
+).then(
+function() {
+  return 2;
+}
+).then(
+function() {
+  throw new Error();
+}
+).catch(
+function() {
+  print(3);
+}  // STOP
+);
+
+setTimeout(function() {
+  Debug.setListener(null);
+  assertNull(exception);
+  var expectation =
+    ["debugger;","debugger;","  print(1);","}","  return 2;","  return 2;",
+     "  throw new Error();","  print(3);","}  // STOP"];
+  assertEquals(log, expectation);
+});
+
+debugger;