setTimeout() is called with a timeout of 0 milliseconds? With a time of 0 ms, the function you select is not immediately called when you call setTimeout().
Instead, it is added to a queue and scheduled to be called "as soon as practicable" once any waiting event handlers are completed.