PromiseRejectionEvent: PromiseRejectionEvent() constructor

Note: This feature is available in Web Workers.

The PromiseRejectionEvent() constructor returns a new PromiseRejectionEvent object, which represents events fired when a JavaScript Promise is rejected.

With promise rejection events, it becomes possible to detect and report promises which fail and whose failures go unnoticed. It also becomes easier to write a global handler for errors.

There are two types of PromiseRejectionEvent: unhandledrejection is sent by the JavaScript runtime when a promise is rejected but the rejection goes unhandled. A rejectionhandled event is emitted if a promise is rejected but the rejection is caught by a rejection handler.

Syntax

js
new PromiseRejectionEvent(type, options)

Parameters

type

A string with the name of the event. It is case-sensitive and browsers set it to rejectionhandled or unhandledrejection.

options

An object that, in addition of the properties defined in Event(), can have the following properties:

promise

The Promise that was rejected.

reason

Any value or Object which represents the reason the promise was rejected. This can be anything from a numeric error code to an error string to an object which contains detailed information describing the situation resulting in the promise being rejected.

Return value

A new PromiseRejectionEvent object configured as specified by the parameters.

Examples

This example creates a new unhandledrejection event for the promise myPromise with the reason being the string "My house is on fire". The reason could just as easily be a number, or even an object with detailed information including the home address, how serious the fire is, and the phone number of an emergency contact who should be notified.

js
let myRejectionEvent = new PromiseRejectionEvent("unhandledrejection", {
  promise: myPromise,
  reason: "My house is on fire",
});

Specifications

Specification
HTML
# unhandled-promise-rejections:dom-event-constructor

Browser compatibility

desktop mobile server
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
PromiseRejectionEvent() constructor
Chrome – Full support
Chrome 49 (Release date: 2016-03-02)
footnote Full support
Edge – Full support
Edge 79 (Release date: 2020-01-15)
footnote Full support
Firefox – Full support
Firefox 69 (Release date: 2019-09-03)
footnote Full support
Opera – Full support
Opera 36 (Release date: 2016-03-15)
footnote Full support
Safari – Full support
Safari 11 (Release date: 2017-09-19)
footnote Full support
Chrome Android – Full support
Chrome Android 49 (Release date: 2016-03-09)
footnote Full support
Firefox for Android – Full support
Firefox for Android 79 (Release date: 2020-07-28)
footnote Full support
Opera Android – Full support
Opera Android 36 (Release date: 2016-03-31)
footnote Full support
Safari on iOS – Full support
Safari on iOS 11.3 (Release date: 2018-03-29)
footnote Full support
Samsung Internet – Full support
Samsung Internet 5 (Release date: 2016-12-15)
footnote Full support
WebView Android – Full support
WebView Android 49 (Release date: 2016-03-09)
footnote Full support
WebView on iOS – Full support
WebView on iOS 11.3 (Release date: 2018-03-29)
footnote Full support
Deno – Full support
Deno 1.24 (Release date: 2022-07-20)
footnote Full support

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

See also