Function.name property is configurable and can be overriden, but if I try
function foo() {}
Object.defineProperty(foo, 'name', {value: 'bar'})
Run Code Online (Sandbox Code Playgroud)
foo.toString() still shows up as "function foo() {}" but I expected it to be "function bar() {}".