private Task scriptTask()

in src/main/java/org/apache/sling/scripting/sightly/js/impl/JsEnvironment.java [108:135]


    private Task scriptTask(final ScriptNameAwareReader reader, final ScriptContext scriptContext, final UnaryCallback callback) {
        return new Task(() -> {
            try {
                Object result;
                if (jsEngine instanceof Compilable) {
                    result = ((Compilable) jsEngine).compile(reader).eval(scriptContext);
                } else {
                    result = jsEngine.eval(reader, scriptContext);
                }
                if (result == null) {
                    CommonJsModule commonJsModule =
                        (CommonJsModule) scriptContext.getBindings(ScriptContext.ENGINE_SCOPE).get(Variables.MODULE);
                    if (commonJsModule != null && commonJsModule.isModified()) {
                        result = commonJsModule.getExports();
                    }
                }
                if (result instanceof AsyncContainer) {
                    ((AsyncContainer) result).addListener(callback);
                } else {
                    callback.invoke(result);
                }
            } catch (ScriptException e) {
                throw new SightlyException(e);
            } finally {
                IOUtils.closeQuietly(reader);
            }
        });
    }