1diff --git a/out/electronHttpExecutor.js b/out/electronHttpExecutor.js
2index 0ae9e1126e1dc136977914ef1bfd46709fc9db1b..3932b6607ca41e6663aae001111c9b18594ed37a 100644
3--- a/out/electronHttpExecutor.js
4+++ b/out/electronHttpExecutor.js
5@@ -61,6 +61,35 @@ class ElectronHttpExecutor extends builder_util_runtime_1.HttpExecutor {
6 }
7 return request;
8 }
9+ // Electron's net.ClientRequest never emits "socket", so the inherited socket idle timeout never
10+ // arms and a stalled request stays pending forever. Reset an idle timer on every chunk instead.
11+ addTimeOutHandler(request, callback, timeout) {
12+ let timer = null;
13+ const clear = () => {
14+ if (timer != null) {
15+ clearTimeout(timer);
16+ timer = null;
17+ }
18+ };
19+ const arm = () => {
20+ clear();
21+ timer = setTimeout(() => {
22+ timer = null;
23+ request.abort();
24+ callback(new Error("Request timed out"));
25+ }, timeout);
26+ };
27+ request.on("response", (response) => {
28+ arm();
29+ response.on("data", arm);
30+ response.on("end", clear);
31+ response.on("aborted", clear);
32+ response.on("error", clear);
33+ });
34+ request.on("abort", clear);
35+ request.on("error", clear);
36+ arm();
37+ }
38 addRedirectHandlers(request, options, reject, redirectCount, handler) {
39 request.on("redirect", (statusCode, method, redirectUrl) => {
40 // no way to modify request options, abort old and make a new one