this `rescue` is far too general. 
what happens if the IO is closed?