Rather than repeat some nontrivial code here (the get from the priority queue and the fallback to the normal one), why not emulate a do…while loop using a bool flag?