code: public boolean invokeProxyScript(ScriptWrapper script, HttpMessage msg, boolean request) {
  		validateScriptType(script, TYPE_PROXY);
  
  		Writer writer = getWriters(script);
  		try {
  			// Dont need to check if enabled as it can only be invoked manually
  			ProxyScript s = this.getInterface(script, ProxyScript.class);
  			
  			if (s != null) {
  				if (request) {
  					return s.proxyRequest(msg);
  				} else {
  					return s.proxyResponse(msg);
  				}
  				
  			} else {
  				handleUnspecifiedScriptError(script, writer, Constant.messages.getString("script.interface.proxy.error"));
  			}
  		
  		} catch (Exception e) {
  			handleScriptException(script, writer, e);
  		}
      	// Return true so that the request is submitted - if we returned false all proxying would fail on script errors
      	return true;
  	}
docs: Invokes the given {@code script}, synchronously, as a {@link ProxyScript}, handling any {@code Exception} thrown during
  the invocation.
  <p>
  The context class loader of caller thread is replaced with the class loader {@code AddOnLoader} to allow the script to
  access classes of add-ons.
  
  @param script the script to invoke.
  @param msg the HTTP message being proxied.
  @param request {@code true} if processing the request, {@code false} otherwise.
  @return {@code true} if the request should be forward to the server, {@code false} otherwise.
  @since 2.2.0
  @see #getInterface(ScriptWrapper, Class)