SLING-9320 - Allow precompiled units to access objects from the same bundle through the Use API

* Only use the commonsjs module if the script eval didn't return a result
diff --git a/src/main/java/org/apache/sling/scripting/sightly/js/impl/JsEnvironment.java b/src/main/java/org/apache/sling/scripting/sightly/js/impl/JsEnvironment.java
index d87bbc7..1dbb3de 100644
--- a/src/main/java/org/apache/sling/scripting/sightly/js/impl/JsEnvironment.java
+++ b/src/main/java/org/apache/sling/scripting/sightly/js/impl/JsEnvironment.java
@@ -114,10 +114,12 @@
                 } else {
                     result = jsEngine.eval(reader, scriptContext);
                 }
-                CommonJsModule commonJsModule =
+                if (result == null) {
+                    CommonJsModule commonJsModule =
                         (CommonJsModule) scriptContext.getBindings(ScriptContext.ENGINE_SCOPE).get(Variables.MODULE);
-                if (commonJsModule != null && commonJsModule.isModified()) {
-                    result = commonJsModule.getExports();
+                    if (commonJsModule != null && commonJsModule.isModified()) {
+                        result = commonJsModule.getExports();
+                    }
                 }
                 if (result instanceof AsyncContainer) {
                     ((AsyncContainer) result).addListener(callback);
diff --git a/src/main/java/org/apache/sling/scripting/sightly/js/impl/use/UseFunction.java b/src/main/java/org/apache/sling/scripting/sightly/js/impl/use/UseFunction.java
index 71fd2c7..85c80d8 100644
--- a/src/main/java/org/apache/sling/scripting/sightly/js/impl/use/UseFunction.java
+++ b/src/main/java/org/apache/sling/scripting/sightly/js/impl/use/UseFunction.java
@@ -27,6 +27,7 @@
 import javax.script.Bindings;
 import javax.script.ScriptEngine;
 
+import org.apache.sling.api.scripting.LazyBindings;
 import org.apache.sling.scripting.core.ScriptNameAwareReader;
 import org.apache.sling.scripting.sightly.SightlyException;
 import org.apache.sling.scripting.sightly.js.impl.JsEnvironment;
@@ -89,20 +90,15 @@
                 if (dependencyReader == null) {
                     throw new SightlyException("Cannot locate script " + dependency);
                 }
-                final String previousScript = (String) globalBindings.get(ScriptEngine.FILENAME);
-                globalBindings.put(ScriptEngine.FILENAME, dependencyReader.getScriptName());
-                jsEnvironment.runScript(dependencyReader, globalBindings, Utils.EMPTY_BINDINGS, arg -> {
+                Bindings bindings = new LazyBindings();
+                bindings.putAll(globalBindings);
+                bindings.put(ScriptEngine.FILENAME, dependencyReader.getScriptName());
+                jsEnvironment.runScript(dependencyReader, bindings, Utils.EMPTY_BINDINGS, arg -> {
                     counter[0]--;
                     dependencies[dependencyPos] = arg;
-                    try {
-                        if (counter[0] == 0) {
-                            Object result = JsUtils.callFn(callback, cx, scope, thisObj, dependencies);
-                            asyncContainer.complete(result);
-                        }
-                    } finally {
-                        if (previousScript != null) {
-                            globalBindings.put(ScriptEngine.FILENAME, previousScript);
-                        }
+                    if (counter[0] == 0) {
+                        Object result = JsUtils.callFn(callback, cx, scope, thisObj, dependencies);
+                        asyncContainer.complete(result);
                     }
                 });
             }