At 4800 bps, each byte will take over 2 milliseconds to be transmitted. And any way you slice it, it will take ~187 milliseconds to receive 90 bytes at 4800 bps.
Here is a single byte @ 4800 bps:
The only way the snippet of code you posted would work is if the data has been transmitted and stored in the HardwareSerial buffer BEFORE that code is executed. This is obvious anyway, because the loop begins with while(Serial.available())
which implies that there must be a byte available before the loop can even start.
In any case, this is just a bunch of speculation as I can't help much more unless I know what the circumstances are regarding the communications, such as when the data has been transmitted with respect to the beginning of your posted code.