Ich denke, da kommt er nicht aus der while Schleife raus.
Wieder mal der völlig der falsche Ansatz für sowas. Du hast mit loop() schon eine Schleife. Dann brauchst du nur eine Zustandsvariable die angibt was du gerade machst. Und je nachdem kann man andere Dinge tun. Oder nichts.