code: public Object execute(String scriptBody, Object[] parameters) {
      try {
        asyncResult = new AsyncScriptResult();
        Function function = createInjectedScriptFunction(scriptBody, asyncResult);
  
        try {
          page.executeJavaScriptFunction(function, function, parameters,
              page.getDocumentElement());
        } catch (ScriptException e) {
          throw new WebDriverException(e);
        }
  
        try {
          return asyncResult.waitForResult(timeoutMillis);
        } catch (InterruptedException e) {
          throw new WebDriverException(e);
        }
      }
      finally {
        asyncResult = null;
      }
    }
docs: Injects an asynchronous script for execution and waits for its result.
  
  @param scriptBody The script body.
  @param parameters The script parameters, which can be referenced using the {@code arguments}
  JavaScript object.
  @return The script result.