Errors in user-provided read/write calls not returned to the driver.
The current signature of the user-provided read/write functions is as follows:
void write(uint8_t reg, uint8_t *buf, uint8_t bytes);
void read(uint8_t reg, uint8_t *buf, uint8_t bytes);
If any errors occur within these functions (Timeouts, Bus Busy usw), there is no mechanism for the function to return an error code.