I think this description would benefit from initially layout out the problem that this method solves.  For instance:

> If you have an input that uses `ng-model-options` to set up debounced events or events such as `blur` you can have a situation where there is a period when the value of the input element is out of synch with the ngModel's `$viewValue`. You can run into difficulties if you try to update the ngModel's '$modelValue` programmatically before these debounced/future events have completed, because Angular's dirty checking mechanism is not able to tell whether the model has actually changed or not.

Then you can go on with how to use this method, as you have described already.