I've used setTimeout to fix "multithreading" bugs in non-web JS using apps. The screen wouldn't draw while the script ran, the GUI elements created, the options they were created with (text field) were all blank on reads even though I passed an initial value when I created the GUI element. Doing a setTimeout allowed the GUI objects to set themselves up.