Sleeps are generally not good in unit tests.  They indicate that behavior is dependent on time and time is a bad thing to depend on if you want deterministic behavior.  Sometimes it is unavoidable, but I'm fairly sure that's true in this case.

hasMore() is allowed to block, so that should be plenty sufficient.