1// Copyright 2014 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// Flags: --expose-debug-as debug --allow-natives-syntax
6
7// Test debug events when we only listen to uncaught exceptions and
8// there is a catch handler for the to-be-rejected Promise.
9// We expect no Exception debug events, since the default reject handler passes
10// the rejection on to a user-defined reject handler.
11
12Debug = debug.Debug;
13
14var resolve, reject;
15var p0 = new Promise(function(res, rej) { resolve = res; reject = rej; });
16
17var p1 = p0.then(function() {
18  throw new Error();
19});
20
21var p2 = p1.then(function() { });
22var p3 = p2.catch(function() { });
23
24var q = new Promise(function(res, rej) {
25  res();
26});
27
28q.then(function() {
29  resolve();
30})
31
32
33function listener(event, exec_state, event_data, data) {
34  try {
35    assertTrue(event != Debug.DebugEvent.Exception);
36  } catch (e) {
37    %AbortJS(e + "\n" + e.stack);
38  }
39}
40
41Debug.setBreakOnUncaughtException();
42Debug.setListener(listener);
43