How so? I'm not convinced. When the "second" closure starts, it gets a copy of `type` when it starts. 
Perhaps I'm not seeing the bigger picture but I tried this in node:
```javascript
types = ['FOO', 'BAR', 'BAZ'];
each(types, function(i, type) {
//  console.log('TYPE:', type);
  var t0=type;
  setTimeout(function() {
    if (t0 !== type) throw "different!";
    console.log(t0,type);
  }, Math.random()*100);
});
```
and it does not throw "different" meaning that the type within the first closure sticks and is identical to what it was outside the async setTimeout. 

But if you say it definitely breaks without this extra closure then I stand to be corrected and learned something.