Poked at this really quickly. Instead of `die`ing I was calling `removeFromSuperview` to see if all was well

```
if yieldContentView isnt view and not yieldContentView.isDead
  yieldContentView.removeFromSuperview()
```

I had better results, but had some weird back and forth behaviour.

Going from A->B, yieldContentView was A and the new view was B
Going from B->A, yieldContentView was B and the new view was B
Going from A->B, yieldContentView was B and the new view was B.

Haven't really investigated into this much, but in my "maybe removeFromSuperview instead of dieing when the cache is active" path may be worthwhile checking out.