<!DOCTYPE html>
<meta charset="utf-8">
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script>
'use strict';
async_test(function(t) {
  var e;
  var p = Promise.reject(new Error());

  window.onunhandledrejection = function(evt) {
    e = evt;
    setTimeout(function() {
      var unreached = t.unreached_func('promise should not be fulfilled');
      p.then(unreached, function(reason) {});
      p = undefined;
    }, 10);
    evt.preventDefault();
  };

  window.onrejectionhandled = function(evt) {
    setTimeout(function() {
      if (window.gc) {
        gc();
      }
      t.step(function() {
        assert_not_equals(e.reason, null);
        assert_not_equals(e.promise, null);
      });
      t.done();
    }, 10);
  };
}, 'evt.promise and evt.reason should live at least as long as evt');
</script>
