in cljs.js, eval-str catches errors during analysis, compilation and evaluation, and returns a {:value … :error …} map. In contrast, the eval function doesn’t catch errors during the evaluation step. Attached patch + tests to make these behave consistently.