I know the solution technically successfully ignores the bug, but perhaps it is being too broad. Could we be more specific about *what* we are rescuing?

Maybe it'd be better to provide a utility method to safely close an `IO`, to check to see if it is closed first  (`@write_io.close unless @write_io.closed?`), or to make sure that we at least attempt to close each of them:

``` ruby
[@write_io, @read_io].each do |io|
  begin
    io.close unless io.closed?
  rescue IOError => e
    $stderr.puts "Got an exception while closing an IO: #{e}"
    $stderr.puts e.backtrace
  end
end
```