don't close the queue when an exception is throw, don't return empty on wait_pull_pull_front.