      (swap! *loaded* disj name))
    (when (= :reload-all reload)
      (reset! *loaded* #{}))
+   (when (:verbose opts)
+     (debug-prn (str "Loading " name (when (:macros-ns opts) " macros") " namespace")))
    (when-not (contains? @*loaded* name)
      (let [env (:*env* bound-vars)]
        (try

           (-> (:*cljs-dep-set* bound-vars) meta :dep-path)))
       (if (seq deps)
         (let [dep (first deps)]
           (when (:verbose opts)
             (debug-prn "Loading" dep))
           (require bound-vars dep opts
             (fn [res]
               (if-not (:error res)


(defn load-macros [bound-vars k macros reload reloads opts cb]
  (if (seq macros)
    (let [nsym (first (vals macros))
          k    (or (k reload)
                   (get-in reloads [k nsym])
                   (and (= nsym name) (:*reload-macros* bound-vars) :reload))]
      (require bound-vars nsym k (assoc opts :macros-ns true)
        (fn [res]
          (if-not (:error res)
            (load-macros bound-vars k (next macros) reload reloads opts cb)
            (cb res)))))
    (cb {:value nil})))

(defn ns-side-effects
