Hm... in your example, the 'val r' seems to always be None, and so is 'val o', because None.map() would always return None. 

The _reader needs (a) to call close() if defined, and (b) to be assigned to None.  So it's possible that we want "Some.map() to return None" and assign it to _reader.

But in retrospect I think line 127 might have gone for a long stretch. It could've done in the following one liner too:
```scala
_reader = { if (_reader != None) _reader.close; None }
```
This might even be better.