It's my understanding that io_read and io_write are not required in the interface and that there is a fallback if they are not present. However because of how the specs work, the expectation that they be called causes them to be defined, which causes them to be called, and then fails with a confusing error. Maybe these specs could define themselves only if the relevant methods are present?