code: JsonNode requestResponse(final JsonNode request) {
          try {
  
              // write request
              String str = request.toString();
              this.stdin.write(str + "\n");
              this.stdin.flush();
  
              // read response
              JsonNode resp = readNextResponse();
  
              // throw if this is an error response
              if (resp.has("error")) {
                  return processErrorResponse(resp);
              }
  
              // process synchronous callbacks (which 'interrupt' the response flow).
              if (resp.has("callback")) {
                  return processCallbackResponse(resp);
              }
  
              // null "ok" means undefined result (or void).
              return resp.get("ok");
  
          } catch (IOException e) {
              throw new JsiiException("Unable to send request to jsii-runtime: " + e.toString(), e);
          }
      }
docs: The main API of this class. Sends a JSON request to jsii-runtime and returns the JSON response.
  @param request The JSON request
  @return The JSON response
  @throws JsiiException If the runtime returns an error response.