This will lead to a busy fill loop in case there are un-served downstream requests but no new messages in the journal. Probably you meant `if (buffer.nonEmpty || replayed == 0) pause() else fill()` but this introduces another problem: if there are un-served downstream requests and the the last number of replayed messages is 0, then the next chance to serve these requests is when another request comes in. If this is not the case then the outstanding requests are never served, hence a schedule is needed.