Skip to content

Commit 09d4e3d

Browse files
authored
Fixes #1474: Race condition in sendRequest in jsonrpc (#1481)
1 parent fc5ed68 commit 09d4e3d

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

jsonrpc/src/common/connection.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1446,15 +1446,17 @@ export function createMessageConnection(messageReader: MessageReader, messageWri
14461446
};
14471447
const responsePromise: ResponsePromise | null = { method: method, timerStart: Date.now(), resolve: resolveWithCleanup, reject: rejectWithCleanup };
14481448
try {
1449-
await messageWriter.write(requestMessage);
14501449
responsePromises.set(id, responsePromise);
1450+
await messageWriter.write(requestMessage);
14511451
if (tokenWasCancelled) {
14521452
sendCancellation(connection, id);
14531453
}
14541454
} catch (error: any) {
1455-
logger.error(`Sending request failed.`);
1456-
// Writing the message failed. So we need to reject the promise.
1455+
// Writing the message failed. So we need to delete it from the response promises and
1456+
// reject it.
1457+
responsePromises.delete(id);
14571458
responsePromise.reject(new ResponseError<void>(ErrorCodes.MessageWriteError, error.message ? error.message : 'Unknown reason'));
1459+
logger.error(`Sending request failed.`);
14581460
throw error;
14591461
}
14601462
});

0 commit comments

Comments
 (0)