   "Given a form and a return value function, send the form to the
   browser for evaluation. The return value function will be called
   when the return value is received."
-  [form return-value-fn]
-  (do (set-return-value-fn return-value-fn)
-      (send-and-close @(connection) 200 form "text/javascript")))
+  ([form return-value-fn]
+     (send-for-eval @(connection) form return-value-fn))
+  ([conn form return-value-fn]
+     (do (set-return-value-fn return-value-fn)
+         (send-and-close conn 200 form "text/javascript"))))
 
 (defn- return-value
   "Called by the server when a return value is received."

                             :promised-conn nil
                             :return-value-fn nil
                             :client-js nil}))

(defn- connection
  "Promise to return a connection when one is available. If a

    (if-let [request (read-request rdr)]
      (case (:method request)
        :get (handle-get opts conn request)
        :post (if (= (:content request) "ready")
                (do (reset! loaded-libs #{})
                    (send-for-eval conn
                                   "goog.provide('cljs.user');"
                                   identity))
                (do (return-value (:content request))
                    (set-connection conn)))
        (.close conn))
      (.close conn))))

