fix(web): support Event subclasses with readonly toStringTag#35920
Merged
nathanwhit merged 1 commit intoJul 9, 2026
Conversation
nathanwhit
marked this pull request as ready for review
July 9, 2026 22:30
bartlomieju
pushed a commit
that referenced
this pull request
Jul 15, 2026
## Summary - define `Event.prototype[Symbol.toStringTag]` with the standard read-only descriptor instead of assigning it on each instance - add regression coverage for subclasses that define their own read-only `Symbol.toStringTag` ## Root cause The `Event` constructor assigned `this[Symbol.toStringTag] = "Event"`. When a subclass, such as Undici's `MessageEvent`, defines a read-only `Symbol.toStringTag` on its prototype, that assignment resolves to the inherited non-writable property and throws during `super()`. Moving the tag to `Event.prototype` matches Web IDL behavior and allows subclasses to provide their own class string. ## Validation - `cargo b --bin deno -p deno` - `./target/debug/deno test -A --config tests/config/deno.json tests/unit/event_test.ts` - constructed Undici 8.5.0's `MessageEvent` with the rebuilt binary - sent a message successfully with `@earendil-works/pi-coding-agent` running under the rebuilt Deno
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Event.prototype[Symbol.toStringTag]with the standard read-only descriptor instead of assigning it on each instanceSymbol.toStringTagRoot cause
The
Eventconstructor assignedthis[Symbol.toStringTag] = "Event". When a subclass, such as Undici'sMessageEvent, defines a read-onlySymbol.toStringTagon its prototype, that assignment resolves to the inherited non-writable property and throws duringsuper().Moving the tag to
Event.prototypematches Web IDL behavior and allows subclasses to provide their own class string.Validation
cargo b --bin deno -p deno./target/debug/deno test -A --config tests/config/deno.json tests/unit/event_test.tsMessageEventwith the rebuilt binary@earendil-works/pi-coding-agentrunning under the rebuilt Deno