A nightmare with I2C serial link, especially with onReceive

Anyone that says I2C is easy and simple has not had the pleasure of writing a driver for one. There are so many things that can go wrong in an I2C transaction, and without the proper driver support, you almost always end up in a "locked-up" state.