Process change events on the same thread as other language service calls

* this is a more robust solution than the ones previously tried