A nightmare with I2C serial link, especially with onReceive

It usually is, if you use I2C for the design purpose, which is communication between chips on a single PCB.