File tree 1 file changed +19
-16
lines changed
1 file changed +19
-16
lines changed Original file line number Diff line number Diff line change 19
19
(def timeout 60000 )
20
20
21
21
(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]
30
31
(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!))))))))])))
39
42
40
43
(defn request
41
44
([message]
You can’t perform that action at this time.
0 commit comments