Я играю по протоколу Language Server. Поработав некоторое время, я вижу два способа общения с языковым сервером: блокирующие и неблокирующие сокеты.
Под блокировкой сокета я подразумеваю отправку запроса и блокировку до ответа. Это легко, но он заблокирует пользовательский интерфейс, как только я использую его в приложении с графическим интерфейсом. Еще один использует асинхронные / неблокирующие сокеты. Это немного сложно и может потребовать некоторого механизма обратного вызова / события.
Теперь мой вопрос: каким образом VSCode использует связь с LSP?