complete conditions before call queue.drain()