An arrow function is used as a method's callback. According to the spec's handling of `this`, what is the actual mechanism by which the arrow sees the surrounding `this` rather than the call-site receiver?
const obj = {
vals: [1, 2],
run() { return this.vals.map(v => this.scale * v); },
scale: 10,
};