With the current implementation, when subsequent handler updates are triggered the initial update is reused. This is creating a race condition when the change that caused a subsequent update has not been used in the initial update.
You can look at the example below for more details, but this can potentially result in bugs whenever more than one update is triggered. In particular, application startup is very susceptible from suffering this, and this has already manifested during MOBILE-4025 where this problem was discovered.
Imagine we have a handler that uses the a fictional site property called "secret number" like this:
And imagine that this validateSecretNumber method calls an external API, so it can take several seconds to resolve.
If updating this secret number triggered handler updates, and we run the following code, the end state is likely to be wrong because the handler will be updated only using the initial secret number: