Ensure that in all cases endApplyingChanges is called prior to running any code that could generate client-side changes, in order to avoid incorrectly discarding changes. Fixes a problem where if non-async signal behavior is used, a request success callback could generate changes that would be discarded because endApplyingChanges had not yet been called.