The context is used to replace `_updatingInProgress` so I removed it. If we use such simple flag to avoid race conditions, we cannot guarantee that the UI display the result of the last query.

Things work like this in your scenario: 
We create a context in the first time we visit the call settings panel. Before the async call returns, we go back and visit the panel again, a new context will be created when calling to the async call again. And then when the first async call returns, it finds it's context is no longer valid so returns directly.