Wire.requestFrom(0x1E, 6);
if(6 <= Wire.available())
You request 6 bytes and immediately test if they are available, if this is not the case the whole if statement is skipped and loop starts over again. This may be a critical piece of timing.
Insert an active waiting loop that test if enough data is available with a max of ~1 second. Code below is not tested...
for (int i=0; i< 1000; i++)
{
if ( 6 >= Wire.available()) break;
delay(1);
}