       :*cljs-ns*      'cljs.user
       :*ns*           (create-ns 'cljs.user)
       :*data-readers* tags/*cljs-data-readers*
-      :*eval-fn*      (or (:js-eval opts) js/eval)}
+      :*load-fn*      (or (:load-fn opts) *load-fn*)
+      :*eval-fn*      (or (:eval-fn opts) *eval-fn*)}
      form opts cb)))
 
 ;; -----------------------------------------------------------------------------

     (reset! *loaded* #{}))
   (when-not (contains? @*loaded* name)
     (let [env (:*env* bound-vars)]
       (*load-fn* (ns->relpath name)
         (fn [resolved]
           (assert (or (map? resolved) (nil? resolved))
             "*load-fn* may only return a map or nil")

           (-> (:*cljs-dep-set* bound-vars) meta :dep-path)))
       (if (seq deps)
         (let [dep (first deps)]
           ((:*load-fn* bound-vars) (ns->relpath dep)
             (fn [resolved]
               (assert (or (map? resolved) (nil? resolved))
                 "*load-fn* may only return a map or nil")
