Sometimes we would see multiple LSP servers because of a race condition.
Now we store the promise instead of the actual LSP client. This way we
don't accidentally start two clients.
Note: the easiest way to trigger multiple LSP clients:
have multiple editors open at the same time (split layout), and then restart vscode.
Each open editor will try to instantiate a client.
Sometimes we would see multiple LSP servers because of a race condition. Now we store the promise instead of the actual LSP client. This way we don't accidentally start two clients.