code: public void invokeSenderScript(ScriptWrapper script, HttpMessage msg, int initiator, HttpSender sender, boolean request) {
          validateScriptType(script, TYPE_HTTP_SENDER);
  
          Writer writer = getWriters(script);
          try {
              HttpSenderScript senderScript = this.getInterface(script, HttpSenderScript.class);
  
              if (senderScript != null) {
                  if (request) {
                      senderScript.sendingRequest(msg, initiator, new HttpSenderScriptHelper(sender));
                  } else {
                      senderScript.responseReceived(msg, initiator, new HttpSenderScriptHelper(sender));
                  }
              } else {
                  handleUnspecifiedScriptError(script, writer, Constant.messages.getString("script.interface.httpsender.error"));
              }
          } catch (Exception e) {
              handleScriptException(script, writer, e);
          }
      }
docs: Invokes the given {@code script}, synchronously, as a {@link HttpSenderScript}, 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 sent/received.
  @param initiator the initiator of the request.
  @param sender the sender of the given {@code HttpMessage}.
  @param request {@code true} if processing the request, {@code false} otherwise.
  @since 2.4.1
  @see #getInterface(ScriptWrapper, Class)