blob: ccff62ef04441b0aca64621f62bb30fe7130215d [file] [log] [blame]
<!DOCTYPE html>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script type="module">
setup({allow_uncaught_exception: true });
// Keep FinalizationRegistry global to avoid it being reclaimed by garbage
// collections that may happen until the registry is processed in microtasks.
let fr;
async_test(t => {
window.onerror = t.step_func_done(function(msg, source, lineno, colno, e) {
assert_equals(e.message, 'weakrefs are awesome',
'Correct exception is thrown');
});
function callback(holdings) {
throw new Error('weakrefs are awesome');
}
fr = new FinalizationRegistry(callback);
(function() {
let garbage = {};
fr.register(garbage, 'holdings');
garbage = null;
})();
gc();
}, 'FinalizationRegistry callback exceptions are reported to error handler');
</script>