Because both run in the User Interface thread AND the UI thread is single threaded.
Once one begins to execute, the other has to wait for the other to finish.
This is just another reason not to overuse property nodes. There is no reason in the world to rewrite the same old property millions of times per second, especially since it is fed by a diagram constant that can never change. Once you set a property, it remains until you set the property to something else.
Property nodes execute in the UI thread. Notice that if you remove the property node and open the calender dialog, the loop keeps spinning.
You simply need to compose your code in such a way that the property node only executes if its input value has changed. There are many ways to do this. Property nodes are relatively expensive (partly because they force a switch to the UI thread) so this is a good idea in all cases.
UI loops such as in your example also deserve a small wait statement.