AsyncBatchQueue.Flush() handles the case when another thread is already trying to flush the current batch