code: @Override
      public MwsReader invoke() {
          HttpPost request = createRequest();
          for (int retryCount = 0;;retryCount++) {
              try {
                  HttpResponse response = executeRequest(request);
                  StatusLine statusLine = response.getStatusLine();
                  int status = statusLine.getStatusCode();
                  String message = statusLine.getReasonPhrase();
                  rhmd = getResponseHeaderMetadata(response);
                  String body = getResponseBody(response);
                  if (status == HttpStatus.SC_OK) {
                      return new MwsXmlReader(body);
                  }
                  if (status == HttpStatus.SC_INTERNAL_SERVER_ERROR) {
                      if (pauseIfRetryNeeded(retryCount)) {
                          continue;
                      }
                  }
                  throw new MwsException(status, message, null, null, body, rhmd);
              } catch (Exception e) {
                  throw MwsUtl.wrap(e);
              } finally {
                  request.releaseConnection();
              }
          }
      }
docs: Perform a synchronous call with error handling and back-off/retry.
  
  @return A MwsReader to read the response from.