                  :clj (eval-str* bound-vars source opts
                         (fn [ret] (cb true)))
                  :js  (do
-                        (*eval-fn* source)
+                        ((:*eval-fn* bound-vars) source)
                         (cb true))
                  (throw
                    (js/Error.

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

      :*data-readers* tags/*cljs-data-readers*
      :*analyze-deps* (or (:analyze-deps opts) true)
      :*load-macros*  (or (:load-macros opts) true)
      :*load-fn*      (or (:load-fn opts) *load-fn*)
      :*eval-fn*      (or (:eval-fn opts) *eval-fn*)}
     source opts cb)))