     ;; (send! {:tag :runtimes :runtimes runtimes})
 
     (if (empty? runtimes)
-      (send! {:tag :err :msg "No available JS runtimes!"})
+      (send! {:tag :err :val "No available JS runtimes!"})
       ;; work loop
       (let [session-id (str (UUID/randomUUID))
             session-ns 'cljs.user

                       {::m/keys [printed-result form eval-ms]} msg]
                   ;; worst hack in history to prevent having to read-string the result
                   (send! {:tag :ret
                           :ns session-ns
                           :form form
                           :ms (or eval-ms 0)
                           :val printed-result})

               (let [{:keys [error? ex source]} msg]
                 (cond
                   error?
                   (do (send! {:tag :err :val (str "Failed to read: " ex)})
                       (recur loop-state))

                   (= ":repl/quit" source)
