I'm wondering if it might be more useful when debugging to have this return an error type that distinguishes between a timeout and a generic error, instead of just a success. I don't have much experience dealing with i2c, though. What is typically the cause of a timeout? Would just a straight-up connection problem cause a different error?