Skip to content

PromiseRejectionEvent not fired #55590

@Joozty

Description

@Joozty

Which @angular/* package(s) are the source of the bug?

zone.js

Is this a regression?

No

Description

The PromiseRejectionEvent is not triggered when zone.js is included on the webpage. The issue stems from zone.js's inability to construct a PromiseRejectionEvent because options parameter is undefined - { promise: undefined, reason: undefined }

Event is not fired and silently ignored here: https://github.com/angular/angular/blob/main/packages/zone.js/lib/common/promise.ts#L82
Fails to construct PromiseRejection error here: https://github.com/angular/angular/blob/main/packages/zone.js/lib/browser/browser.ts#L316

image

Here is a minimal example to reproduce the issue. Note that if you remove the zone.js script, the event fires as expected.

<!doctype html>
<html lang="en">
	<head>
		<meta charset="UTF-8" />
		<title>Title</title>
		<script src="https://cdn.jsdelivr.net/npm/zone.js@0.14.4/bundles/zone.umd.min.js"></script>
	</head>
	<body>
		<script>
			window.addEventListener('unhandledrejection', (event) =>
				console.log('unhandledrejection', event, event.promise, event.reason),
			)

			const scriptEl = document.createElement('script')
			scriptEl.innerHTML = "Promise.reject('Error happened :(')"
			document.body.append(scriptEl)
		</script>
	</body>
</html>

Please provide a link to a minimal reproduction of the bug

No response

Please provide the exception or error you saw

No response

Please provide the environment you discovered this bug in (run ng version)

zone.js: latest

Anything else?

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: zonesIssues related to zone.js

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions