I2C bus availability

When working with multiple I2C devices on the same bus, can one assume that there’s never a conflict between attempts to read or write to various devices because the i2c.read and i2c.write calls are synchronous and the Imp is single threaded ?
Reason for asking is because my code does seem to suffer from bus contention one way or another…

Yes. Any time an operation completes, the bus should be free.

This doesn’t mean it is free though; some devices can be badly behaved. Knowing the devices in use here - and capturing scope or logic analyzer traces of a bus lockup - would help diagnose it more.