nodejs / readable-stream

Node-core streams for userland
https://nodejs.org/api/stream.html
Other
1.03k stars 227 forks source link

Evade override mistake #474

Closed erights closed 2 years ago

erights commented 2 years ago

See https://github.com/Agoric/agoric-sdk/blob/master/patches/bl%2B%2Breadable-stream%2B3.6.0.patch

The original code used assignment to override the name and toString properties inherited from Error.prototype. However, if Error.prototype is frozen, as it is under Hardened JS (aka SES) or under the Node frozen intrinsics flag, then this assignment fails due to the JavaScript "override mistake".

enumerable: true would accurately preserve the behavior of the original assignment, but I'm guessing that was not intentional. For an actual error subclass, this property would not be enumerable, so my PR currently proposes that. But either would work, so let me know if you'd like me to change it.

mcollina commented 2 years ago

Could you add a test for this under test/ours?