   [opts]
   (let [verbose? (:verbose opts)
         read-file! (:read-file-fn! opts)]
-    (when verbose?
-      (common/debug-prn "Discovering goog/deps.js in" (:src-paths opts)))
-    (doseq [path (:src-paths opts)]
-      (let [goog-deps-path (str (common/normalize-path path) "goog/deps.js")]
-        (read-file! goog-deps-path
-                    (fn [content]
-                      (when content
-                        (do (when verbose?
-                              (common/debug-prn "Found valid" goog-deps-path))
-                            (swap! app-env
-                                   update :goog-provide->path
-                                   merge (goog-deps-map content))))))))))
+    (if read-file!
+      (do (when verbose?
+            (common/debug-prn "Discovering goog/deps.js in" (:src-paths opts)))
+          (doseq [path (:src-paths opts)]
+            (let [goog-deps-path (str (common/normalize-path path) "goog/deps.js")]
+              (read-file! goog-deps-path
+                          (fn [content]
+                            (when content
+                              (do (when verbose?
+                                    (common/debug-prn "Found valid" goog-deps-path))
+                                  (swap! app-env
+                                         update :goog-provide->path
+                                         merge (goog-deps-map content)))))))))
+      (when verbose?
+        (common/debug-prn "No :read-file-fn! provided, skipping goog/deps.js discovering...")))))
 
 (defn init-repl!
   "The init-repl function. It uses the following opts keys:

  src-cb] where src-cb is itself a function (fn [source] ...) that needs
  to be called with the full source of the library (as string)."
  [verbose? src-paths read-file-fn!]
  (fn [{:keys [name macros path] :as load-map} cb]
    (cond
      (load/skip-load? load-map) (load/fake-load-fn! load-map cb)
      (re-matches #"^goog/.*" path) (if-let [goog-path (get-goog-path name)]
                                      (load/read-files-and-callback! verbose?
                                                                     (load/goog-file-paths-to-try src-paths goog-path)
                                                                     read-file-fn!
                                                                     cb)
                                      (cb nil))
      :else (load/read-files-and-callback! verbose?
                                           (load/file-paths-to-try src-paths macros path)
                                           read-file-fn!
                                           cb))))

;;;;;;;;;;;;;;;;
;;; Options ;;;;

  [opts user-opts]
  (assoc opts :load-fn!
         (or (:load-fn! user-opts)
             ;; AR - make-load-fn will validate :src-paths/:read-file-fn!
             (make-load-fn (:verbose user-opts)
                           (:src-paths user-opts)
                           (:read-file-fn! user-opts)))))

(defn add-init-fns
  "Given current and user options, returns a map containing a
