This amounts to the follow exit condition: if we've started calling finish() and nothing has come into the queue for 1/100th of a second, exit.

You can move this .01 to a timeout when polling the queue and instead set a boolean flag here to tell the thread if the timeout is reached,  exit instead of trying again.