Fix a race condition problem

I've fixed #3857.

And I am sorry. I didn't know my commit was notified to upstream automatically. 
I shouldn't have done force-push.
The method can be renamed to `$safeUpdateMode` keeping it public and tagged as `@internal`.