aboutsummaryrefslogtreecommitdiff
path: root/editors/code/src/ctx.ts
diff options
context:
space:
mode:
Diffstat (limited to 'editors/code/src/ctx.ts')
-rw-r--r--editors/code/src/ctx.ts21
1 files changed, 0 insertions, 21 deletions
diff --git a/editors/code/src/ctx.ts b/editors/code/src/ctx.ts
index dfc8aa7b9..43540e0d8 100644
--- a/editors/code/src/ctx.ts
+++ b/editors/code/src/ctx.ts
@@ -52,24 +52,3 @@ export interface Disposable {
52 dispose(): void; 52 dispose(): void;
53} 53}
54export type Cmd = (...args: any[]) => unknown; 54export type Cmd = (...args: any[]) => unknown;
55
56export async function sendRequestWithRetry<R>(
57 client: lc.LanguageClient,
58 method: string,
59 param: unknown,
60 token?: vscode.CancellationToken,
61): Promise<R> {
62 for (const delay of [2, 4, 6, 8, 10, null]) {
63 try {
64 return await (token ? client.sendRequest(method, param, token) : client.sendRequest(method, param));
65 } catch (err) {
66 if (delay === null || err.code !== lc.ErrorCodes.ContentModified) {
67 throw err;
68 }
69 await sleep(10 * (1 << delay));
70 }
71 }
72 throw 'unreachable';
73}
74
75const sleep = (ms: number) => new Promise(resolve => setTimeout(resolve, ms));