From 9cf18503eee1a7fac09892a776792f1be8ca79e6 Mon Sep 17 00:00:00 2001 From: Zaid Abdulla Date: Tue, 13 Jul 2021 15:34:38 -0700 Subject: [PATCH] Fix exceptions from ext showing as timeout error --- lib/extensions.ts | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/lib/extensions.ts b/lib/extensions.ts index eac6868..95f4d9c 100644 --- a/lib/extensions.ts +++ b/lib/extensions.ts @@ -30,14 +30,6 @@ const TIMEOUT = +config.get("EXT_TIMEOUT"); const processes: { [script: string]: ChildProcess } = {}; const jobs = new Map(); -function messageHandler(message): void { - const func = jobs.get(message[0]); - if (func) { - jobs.delete(message[0]); - func({ fault: message[1], value: message[2] }); - } -} - export function run(args: string[]): Promise<{ fault: Fault; value: any }> { return new Promise((resolve) => { const scriptName = args[0]; @@ -70,7 +62,16 @@ export function run(args: string[]): Promise<{ fault: Fault; value: any }> { if (processes[scriptName] === p) delete processes[scriptName]; }); - p.on("message", messageHandler); + p.on("message", (message) => { + const func = jobs.get(message[0]); + if (func) { + jobs.delete(message[0]); + // Wait for any disconnect even to fire + setTimeout(() => { + func({ fault: message[1], value: message[2] }); + }); + } + }); const rlstdout = readline.createInterface(p.stdout); rlstdout.on("line", (line) => {