che io sappia un return termina l'esecuzione del codice , ovunque esso sia .... quindi questo magari potrebbe andare meglio

settimeout('pulisci()',500); return controllo_messaggio();

oltre questo considera che esiste anche l'assegnazione in += che evita di scrivere 2 volte la stessa identica cosa, ridondante e più pesante senza motivo

elemento.value += 'testo';