When *load-fn* returns asynchronously, the dynamic var *eval-fn* is no longer bound. For :clj sources it is then re-bound inside eval-str*, but nothing equivalent happens for :js sources, which leads to the error No eval-fn set.
I’ve attached a patch which calls (:*eval-fn* bound-vars) instead of *eval-fn* in eval*.
Patch does not apply, also this one is not in the right format - https://clojurescript.org/community/patches. This way we don’t lose author information and sometimes git can automatically merge the patch.