why call it an `IOError`? it's just an unexpected return type from the `read_file` function?