https://stackoverflow.com/questions/14863022/settimeout-behaviour-with-blocking-code
'JavaScript is single-threaded. If some block of code uses execution thread, no other code can be executed. This means your setTimeout() call must wait until main execution (the one with busy-waiting while loop) finishes.' - Tomasz Nurkiewicz