USB data transfer is prone to delays that do not normally appear in systems that have been used to transferring data using interrupts. The original COM ports of a PC were directly connected to the motherboard and were interrupt driven. When a character was transmitted or received (depending if FIFO's are used) the CPU would be interrupted and go to a routine to handle the data. This meant that a user could be reasonably certain that, given a particular baud rate and data rate, the transfer of data could be achieved without any real need for flow control. The hardware interrupt ensured that the request would get serviced. Therefore data could be transferred without using handshaking and still arrive into the PC without data loss.