         (emits "(" (when checked "cljs.core.truth_") "(" test ")?" then ":" else ")")
         (do
           (if checked
-            (emitln "if(cljs.core.truth_(" test "))")
-            (emitln "if(" test ")"))
-          (emitln "{" then "} else")
-          (emitln "{" else "}"))))))
+            (emitln "if(cljs.core.truth_(" test ")){")
+            (emitln "if(" test "){"))
+          (emitln then "} else {")
+          (emitln else "}"))))))
 
 (defmethod emit* :case*
   [{:keys [v tests thens default env]}]

(defmethod emit* :do
  [{:keys [statements ret env]}]
  (let [context (:context env)]
    (when (and statements (= :expr context)) (emits "(function (){"))
    (when statements
      (emits statements))
    (emit ret)
    (when (and statements (= :expr context)) (emits "})()"))))

(defmethod emit* :try
  [{:keys [env try catch name finally]}]

  (emit-wrap env
    (emits "(function " (munge name) "(")
    (emit-fn-params params)
    (emitln "){")
    (when type
      (emitln "var self__ = this;"))
    (when recurs (emitln "while(true){"))
