   (let [{:keys [tag] :as data}
         (ex-data ex)]
 
-    (when (not= tag :java-exit)
-      (log "shadow-cljs - error" (.-message ex)))
+    (js/console.warn "===== ERROR =================")
+    (js/console.warn (.-message ex))
+    (js/console.warn "=============================")
     ))
 
 (defn get-shared-home []


(defn read-config* [config-path]
  (try
    (-> (util/slurp config-path)
        (#(reader/read-string {:readers {'shadow/env getenv}} %)))
    (catch :default ex
      ;; FIXME: missing tools.reader location information
      ;; FIXME: show error location with excerpt like other warnings
      (throw (ex-info (format "failed reading config file: %s" config-path) {:config-path config-path} ex)))))

(defn read-user-config []
  (let [config-path (path/resolve (os/homedir) ".shadow-cljs" "config.edn")]

    ["net" :as node-net]
    ["which" :as which]
    [cljs.core.async :as async :refer (go go-loop alt!)]
    [cljs.tools.reader.reader-types :as rt]
    [cljs.tools.reader.edn :as edn]
    [cljs.reader :as reader]
    [clojure.string :as str]
    [goog.object :as gobj]
