private Task scriptTask()

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


    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 {
                closeQuietly(reader);
            }
        });
    }