public NashornRuntime(final Vertx vertx, NashornScriptEngine engine) {
this.engine = engine;
try {
final Bindings engineBindings = engine.getBindings(ScriptContext.ENGINE_SCOPE);
engineBindings.remove("exit");
engineBindings.remove("quit");
final Bindings globalBindings = new SimpleBindings();
globalBindings.put("vertx", vertx);
globalBindings.put("global", engine.eval("this"));
engine.setBindings(globalBindings, ScriptContext.GLOBAL_SCOPE);
engine.invokeFunction("load", "classpath:io/reactiverse/es4x/polyfill/object.js");
engine.invokeFunction("load", "classpath:io/reactiverse/es4x/polyfill/json.js");
engine.invokeFunction("load", "classpath:io/reactiverse/es4x/polyfill/global.js");
engine.invokeFunction("load", "classpath:io/reactiverse/es4x/polyfill/date.js");
engine.invokeFunction("load", "classpath:io/reactiverse/es4x/polyfill/console.js");
engine.invokeFunction("load", "classpath:io/reactiverse/es4x/polyfill/promise.js");
engine.invokeFunction("load", "classpath:io/reactiverse/es4x/polyfill/worker.js");
module = engine.invokeFunction("load", "classpath:io/reactiverse/es4x/jvm-npm.js");
require = (JSObject) engine.get("require");
} catch (ScriptException | NoSuchMethodException e) {
throw new RuntimeException(e);
}
}