Use an IO.pipe to wake up IO.select, not an exception