docs: private <X, Y extends AmazonWebServiceRequest> Response<X> doInvoke(Request<Y> request, HttpResponseHandler<AmazonWebServiceResponse<X>> responseHandler,
              ExecutionContext executionContext, URI discoveredEndpoint, URI uriFromEndpointTrait) {
  
          if (discoveredEndpoint != null) {
              request.setEndpoint(discoveredEndpoint);
              request.getOriginalRequest().getRequestClientOptions().appendUserAgent("endpoint-discovery");
          } else if (uriFromEndpointTrait != null) {
              request.setEndpoint(uriFromEndpointTrait);
          } else {
              request.setEndpoint(endpoint);
          }
  
          request.setTimeOffset(timeOffset);
  
          HttpResponseHandler<AmazonServiceException> errorResponseHandler = protocolFactory.createErrorResponseHandler(new JsonErrorResponseMetadata()
                  .withCustomErrorCodeFieldName("code"));
  
          return client.execute(request, responseHandler, errorResponseHandler, executionContext);
      }