Question: I have been developing an application that allows for multiple people to concurrently modify data and automatically propagate the changes real time. In the processes of doing so some questions about the nature of $watch arose.

One of them was: 

***What happens if the data model being watched changes while the watch call is in process?***

From some experimental results I believe that the watch gets called again at the same time. I believe some infinite digest loops have been caused by this.

And another noteworthy question not about watch was:

***What is the best way to block the client to wait for a promise to be executed?***

Any resources on Angular RT Web development would be awesome too!

Answer: 
For you first question I suggest reading Angular's runtime concepts in the [developer guide](http://docs.angularjs.org/guide/concepts). Basically it is only natural that data might change while `$digest` phase in progress because multiple `$watchers` could modify it. The catch here is that angular expects the model to stabilize in 10 iterations or it will throw `Maximum iteration limit exceeded.` error, but you can increase this limit. 

Now the second question is a bit of a oxymoron - the whole point of promises is **not** to block client while something is executed asynchronously. Usually you would do async action, get promise and hook up a callback to be executed after the async action is complete.
Have you looked into Firebase and Angular fire?
<http://angularfire.com/>

I'm pretty new to this, but it seems like the best choice for real time apps atm.