private void decodeJSPromise()

in src/main/java/org/apache/sling/scripting/sightly/js/impl/async/AsyncExtractor.java [49:68]


    private void decodeJSPromise(final Scriptable promise, final UnaryCallback callback) {
        try {
            Context context = Context.enter();
            final AsyncContainer errorContainer = new AsyncContainer();
            final Function errorHandler = createErrorHandler(errorContainer);
            final Function successHandler = convertCallback(callback);
            EventLoopInterop.schedule(context, new Runnable() {
                @Override
                public void run() {
                    ScriptableObject.callMethod(promise, THEN_METHOD,
                            new Object[] {successHandler, errorHandler});
                }
            });
            if (errorContainer.isCompleted()) {
                throw new SightlyException("Promise has completed with failure: " + Context.toString(errorContainer.getResult()));
            }
        } finally {
            Context.exit();
        }
    }