Wire.onReceive(hadler) terminated only one time

This leaves 1 byte in the pipe. Why don't you want to read everything received?