Don't invoke callback under lock.

When service client receives chocke, it shouldn't remove promise under the lock. The promise invokes user callback in the destructor, and if this callback tries to use the same service, it will deadlock.