Skip to content

Commit d3b24e2

Browse files
committed
Cleanup timeout off event loop when done
1 parent 8a57602 commit d3b24e2

File tree

1 file changed

+19
-16
lines changed

1 file changed

+19
-16
lines changed

src/portal/runtime/node/client.cljs

+19-16
Original file line numberDiff line numberDiff line change
@@ -19,23 +19,26 @@
1919
(def timeout 60000)
2020

2121
(defn- get-connection [session-id]
22-
(.race
23-
js/Promise
24-
[(js/Promise.
25-
(fn [resolve _reject]
26-
(js/setTimeout #(resolve nil) timeout)))
27-
(js/Promise.
28-
(fn [resolve _reject]
29-
(let [watch-key (keyword (gensym))]
22+
(let [done (atom nil)]
23+
(.race
24+
js/Promise
25+
[(js/Promise.
26+
(fn [resolve _reject]
27+
(let [handle (js/setTimeout #(resolve nil) timeout)]
28+
(reset! done #(js/clearTimeout handle)))))
29+
(js/Promise.
30+
(fn [resolve _reject]
3031
(if-let [send! (get @connections session-id)]
31-
(resolve send!)
32-
(add-watch
33-
connections
34-
watch-key
35-
(fn [_ _ _old new]
36-
(when-let [send! (get new session-id)]
37-
(remove-watch connections watch-key)
38-
(resolve send!))))))))]))
32+
(do (@done) (resolve send!))
33+
(let [watch-key (keyword (gensym))]
34+
(add-watch
35+
connections
36+
watch-key
37+
(fn [_ _ _old new]
38+
(when-let [send! (get new session-id)]
39+
(@done)
40+
(remove-watch connections watch-key)
41+
(resolve send!))))))))])))
3942

4043
(defn request
4144
([message]

0 commit comments

Comments
 (0)