The IO Class Pattern states that all IO is non-blocking, consistent with ECMAScript API behavior on the web platform.
On the other hand, the I²C class read method, which is documented here, returns the data read which would indicate that it's blocking. The read method will have to access the target I²C peripheral to read the required data and therefore block.
Or have I misunderstood something?