This is really weird. Could you move the waiting--; before this if statement, and then check for !_waiting ?