should do `reader.close()` in finally block.