summaryrefslogtreecommitdiff
path: root/deps/v8/test/mjsunit/es6/debug-promises/promise-race-uncaught.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/mjsunit/es6/debug-promises/promise-race-uncaught.js')
-rw-r--r--deps/v8/test/mjsunit/es6/debug-promises/promise-race-uncaught.js45
1 files changed, 21 insertions, 24 deletions
diff --git a/deps/v8/test/mjsunit/es6/debug-promises/promise-race-uncaught.js b/deps/v8/test/mjsunit/es6/debug-promises/promise-race-uncaught.js
index 57955c01ef..ed6233bc30 100644
--- a/deps/v8/test/mjsunit/es6/debug-promises/promise-race-uncaught.js
+++ b/deps/v8/test/mjsunit/es6/debug-promises/promise-race-uncaught.js
@@ -6,28 +6,16 @@
// Test debug events when we only listen to uncaught exceptions and a
// Promise p3 created by Promise.race has no catch handler, and is rejected
-// because one of the Promises p2 passed to Promise.all is rejected. We
-// expect two Exception debug events to be triggered, for p2 and p3 each,
-// because neither has an user-defined catch handler.
+// because one of the Promises p2 passed to Promise.race is rejected.
+// We expect one event for p2; the system recognizes the rejection of p3
+// to be redundant and based on the rejection of p2 and does not trigger
+// an additional rejection.
var Debug = debug.Debug;
-var expected_events = 2;
+var expected_events = 1;
var log = [];
-var p1 = Promise.resolve();
-p1.name = "p1";
-
-var p2 = p1.then(function() {
- log.push("throw");
- throw new Error("uncaught"); // event
-});
-
-p2.name = "p2";
-
-var p3 = Promise.race([p2]);
-p3.name = "p3";
-
function listener(event, exec_state, event_data, data) {
if (event != Debug.DebugEvent.Exception) return;
try {
@@ -35,13 +23,9 @@ function listener(event, exec_state, event_data, data) {
assertTrue(expected_events >= 0);
assertEquals("uncaught", event_data.exception().message);
assertTrue(event_data.promise() instanceof Promise);
- if (expected_events === 1) {
- // Assert that the debug event is triggered at the throw site.
- assertTrue(exec_state.frame(0).sourceLineText().indexOf("// event") > 0);
- assertEquals("p2", event_data.promise().name);
- } else {
- assertEquals("p3", event_data.promise().name);
- }
+ // Assert that the debug event is triggered at the throw site.
+ assertTrue(exec_state.frame(0).sourceLineText().indexOf("// event") > 0);
+ assertEquals("p2", event_data.promise().name);
assertTrue(event_data.uncaught());
} catch (e) {
%AbortJS(e + "\n" + e.stack);
@@ -51,6 +35,19 @@ function listener(event, exec_state, event_data, data) {
Debug.setBreakOnUncaughtException();
Debug.setListener(listener);
+var p1 = Promise.resolve();
+p1.name = "p1";
+
+var p2 = p1.then(function() {
+ log.push("throw");
+ throw new Error("uncaught"); // event
+});
+
+p2.name = "p2";
+
+var p3 = Promise.race([p2]);
+p3.name = "p3";
+
log.push("end main");
function testDone(iteration) {