I am learning about lexical `this` being passed around and it is my understanding that a fat arrow gets its "this" from itself or the function above it. If that is a regular function my understanding is it wouldn't get `this` from a function higher than this. For example this is the code I believe shouldn't run:

```js
function test() {
  this.a = 5; // test()' variable
  this.b = function() {
    //this is a fat arrow function so console log below could grab the this from this function's space, but not higher than this, but it does?
    this.c = setTimeout(() => {
      console.log(this.a);
    }, 1000);
  }
}
var d = new test();
d.b();
```

So I expect that the console.log statement wants to print out `this.a` . It doesn't exist in the fat arrow functions context so it goes up one level to the anonymous function level. There is also no `this.a` here. This is a regular non-fat arrow function meaning the lexical scope to my understanding should stop here, it shouldn't go up any higher, but it does and I am not sure why. Why is this happening?