A nie lepiej użyć funkcji setInterval skoro ma to być jak piszesz "pętla nieskończona"? Na przykład coś takiego:
https://codepen.io/Tomek_Sochacki/pen/XYvWNo?editors=1010
Zrobiłem tam na szybko funkcję, która pobiera trzy argumenty: tablicę wiadomości do wyświetlana, selektor do pobrania referencji DOM dla elementu gdzie ma wyświetlać wyniki i czas (interwał) co jaki wiadomości mają być pokazywane. Dzięki temu możesz zrobić uniwersalną funkcję, którą wykorzystasz np. w kilku miejscach.
Jest to pisane na szybko, o 1 w nocy nie chce mi się już zbytnio myśleć więc nie sugeruj się kodem lecz bardziej traktuj to jako pomysł na zasadę rozwiązania problemu.
Rozwiązanie to pozwala Ci też w razie potrzeby dać opcję zatrzymania setInterval.
Ewentualnie można by pobawić się generatorem z jakąś pętelką while albo do-while gdzie w sumie również można by dać opcję zakończenia generatora i przejście do return() po przekazaniu jakiegoś parametru do metody next(). Jak znajdę jutro chwilę to może coś się pobawię tym pomysłem.