Closed
Description
In a PR i'm working on @ljharb pointed out several cases where using things like String.prototype.replace
or fs.readFileSync
are unsafe because user code could override them, forcing me to use things like const StringReplace = Function.call.bind(String.prototype.replace)
and use that instead. A fair amount of node code uses this pattern, and a fair amount doesn't guard against this at all. I opened this issue to create a discussion about what the pattern should be moving forward, if there are things we can do to prevent this behavior from affection core libs, etc.