What does Arduino do in 15ms?
Just check the sourcecode

for (;;) {
    loop();
    if (serialEventRun) serialEventRun();
}


So it does a check if serialEventRun is True, and then a jump back to the beginning of the for-loop. And then a call to loop.

Also note that Serial.print is blocking if the TX-buffer is full. So you might want to add a delay somewhere to ensure the buffer is never full.