/
async_result.cljc
30 lines (29 loc) · 1.17 KB
/
async_result.cljc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
(ns figwheel.main.async-result
(:require [figwheel.repl]))
#?(:cljs
(do
(defn send [result-str]
(let [msg {:figwheel-event "async-result" :value result-str}]
(figwheel.repl/debug [:async-send (pr-str msg)])
(figwheel.repl/respond-to-connection msg)))
(defn throw-ex [ex]
(when ex
(let [msg {:figwheel-event "async-result"
:value
{:type ::exception
:status :exception
:value (try (pr-str ex)
(catch js/Error e
"Error"))
:message (.-message ex)
:ex-data (ex-data ex)
:ua-product (figwheel.repl/get-ua-product)
:stacktrace (.-stack ex)}}]
(figwheel.repl/debug [:async-throw (pr-str msg)])
(figwheel.repl/respond-to-connection msg)))))
:clj (defn listen [prom]
(figwheel.repl/add-listener
::listener
(fn [{:keys [response] :as msg}]
(when (= "async-result" (:figwheel-event response))
(deliver prom (:value response)))))))