I don't use lazserial (but the Delphi comport unit), but the trick is to see if there is some call to see how much bytes you can safely read (without blocking) and then read them, and do that in a loop with a sleep in it, or on a timer or so.
Or otherwise a function read with a timeout value.