Giusto così!
Il fine dello script è quello di caricare un grosso numero di immagini un poco alla volta per non bloccare il server.
La versione veloce carica tutte le immagini in un colpo solo e, quindi, non ottengo il risultato voluto.
Invece lo script con l'istruzione setTimeout(so, 2000) non fa nulla, rimane bloccato, indipendentemente dal ritardo impostato, sino a quando non si chiude la pagina.