     (finally (capture-session-state-for-session-id session-id))))
 
 (defn- execute-source
-  [[source-type source-value] {:keys [expression?] :as opts}]
-  (binding [ana/*cljs-ns*    @current-ns
-            *ns*             (create-ns @current-ns)
-            cljs/*load-fn*   load-fn
-            cljs/*eval-fn*   (get-eval-fn)
-            r/*data-readers* tags/*cljs-data-readers*]
-    (if-not (= "text" source-type)
-      (process-execute-path source-value (assoc opts :source-path source-value))
-      (let [source-text source-value
-            first-form  (eof-guarded-read source-text)]
-        (when (not= eof first-form)
-          (let [expression-form (and expression? first-form)]
-            (if (repl-special? expression-form)
-              (process-repl-special expression-form opts)
-              (process-execute-source source-text expression-form opts))))))))
+  [source opts]
+  (let [[source-type source-value] source
+        {:keys [expression?]} opts]
+    (binding [ana/*cljs-ns*    @current-ns
+              *ns*             (create-ns @current-ns)
+              cljs/*load-fn*   load-fn
+              cljs/*eval-fn*   (get-eval-fn)
+              r/*data-readers* tags/*cljs-data-readers*]
+      (if-not (= "text" source-type)
+        (process-execute-path source-value (assoc opts :source-path source-value))
+        (let [source-text source-value
+              first-form  (eof-guarded-read source-text)]
+          (when (not= eof first-form)
+            (let [expression-form (and expression? first-form)]
+              (if (repl-special? expression-form)
+                (process-repl-special expression-form opts)
+                (process-execute-source source-text expression-form opts)))))))))
 
 (defn- ^:export execute
   [source expression? print-nil-expression? set-ns theme-id session-id]

        (when sourcemap-json "and source map ")
        "for " path))))

(declare strip-source-map)

(defn- write-cache
  [path name source cache]

            theme      (assoc theme :err-font (:verbose-font theme))]
    (apply println args)))

(declare ^{:arglists '([error]
                       [error include-stacktrace?]
                       [error include-stacktrace? printed-message])} print-error)
(declare ^{:arglists '([e include-stacktrace?])} handle-error)

(defonce ^:private st (cljs/empty-state))

