code: public WsResponse call(WsRequest request) {
      Preconditions.checkState(!globalMode.isMediumTest(), "No WS call should be made in medium test mode");
      Profiler profiler = Profiler.createIfDebug(LOG).start();
      WsResponse response = target.wsConnector().call(request);
      profiler.stopDebug(format("%s %d %s", request.getMethod(), response.code(), response.requestUrl()));
      failIfUnauthorized(response);
      return response;
    }
docs: If an exception is not thrown, the response needs to be closed by either calling close() directly, or closing the
  body content's stream/reader.
  
  @throws IllegalStateException if the request could not be executed due to a connectivity problem or timeout. Because networks can
  fail during an exchange, it is possible that the remote server accepted the request before the failure
  @throws MessageException      if there was a problem with authentication or if a error message was parsed from the response.
  @throws HttpException         if the response code is not in range [200..300). Consider using {@link #createErrorMessage(HttpException)} to create more relevant messages for the users.