docs: private final void handleHttpWorkerResponse(
              ResponseOnSingeRequest respOnSingleReq) throws Exception {
          // Successful response from GenericAsyncHttpWorker
  
          // Jeff 20310411: use generic response
  
          String responseContent = respOnSingleReq.getResponseBody();
          response.setResponseContent(respOnSingleReq.getResponseBody());
  
          /**
           * Poller logic if pollable: check if need to poll/ or already complete
           * 1. init poller data and HttpPollerProcessor 2. check if task
           * complete, if not, send the request again.
           */
          if (request.isPollable()) {
              boolean scheduleNextPoll = false;
              boolean errorFindingUuid = false;
  
              // set JobId of the poller
              if (!pollerData.isUuidHasBeenSet()) {
                  String jobId = httpPollerProcessor
                          .getUuidFromResponse(respOnSingleReq);
  
                  if (jobId.equalsIgnoreCase(PcConstants.NA)) {
                      errorFindingUuid = true;
                      pollingErrorCount++;
                      logger.error("!!POLLING_JOB_FAIL_FIND_JOBID_IN_RESPONSE!! FAIL FAST NOW. PLEASE CHECK getJobIdRegex or retry. "
  
                              + "DEBUG: REGEX_JOBID: "
                              + httpPollerProcessor.getJobIdRegex()
  
                              + "RESPONSE: "
                              + respOnSingleReq.getResponseBody()
                              + " polling Error count"
                              + pollingErrorCount
                              + " at " + PcDateUtils.getNowDateTimeStrStandard());
                      // fail fast
                      pollerData.setError(true);
                      pollerData.setComplete(true);
  
                  } else {
                      pollerData.setJobIdAndMarkHasBeenSet(jobId);
                      // if myResponse has other errors, mark poll data as error.
                      pollerData.setError(httpPollerProcessor
                              .ifThereIsErrorInResponse(respOnSingleReq));
                  }
  
              }
              if (!pollerData.isError()) {
  
                  pollerData
                          .setComplete(httpPollerProcessor
                                  .ifTaskCompletedSuccessOrFailureFromResponse(respOnSingleReq));
                  pollerData.setCurrentProgress(httpPollerProcessor
                          .getProgressFromResponse(respOnSingleReq));
              }
  
              // poll again only if not complete AND no error; 2015: change to
              // over limit
              scheduleNextPoll = !pollerData.isComplete()
                      && (pollingErrorCount <= httpPollerProcessor
                              .getMaxPollError());
  
              // Schedule next poll and return. (not to answer back to manager yet
              // )
              if (scheduleNextPoll
                      && (pollingErrorCount <= httpPollerProcessor
                              .getMaxPollError())) {
  
                  pollMessageCancellable = getContext()
                          .system()
                          .scheduler()
                          .scheduleOnce(
                                  Duration.create(httpPollerProcessor
                                          .getPollIntervalMillis(),
                                          TimeUnit.MILLISECONDS), getSelf(),
                                  OperationWorkerMsgType.POLL_PROGRESS,
                                  getContext().system().dispatcher(), getSelf());
  
                  logger.info("\nPOLLER_NOW_ANOTHER_POLL: POLL_RECV_SEND"
                          + String.format("PROGRESS:%.3f, BODY:%s ",
                                  pollerData.getCurrentProgress(),
                                  responseContent,
                                  PcDateUtils.getNowDateTimeStrStandard()));
  
                  String responseContentNew = errorFindingUuid ? responseContent
                          + "_PollingErrorCount:" + pollingErrorCount
                          : responseContent;
                  logger.info(responseContentNew);
                  // log
                  pollerData.getPollingHistoryMap().put(
                          "RECV_" + PcDateUtils.getNowDateTimeStrConciseNoZone(),
                          String.format("PROGRESS:%.3f, BODY:%s",
                                  pollerData.getCurrentProgress(),
                                  responseContent));
                  return;
              } else {
                  pollerData
                          .getPollingHistoryMap()
                          .put("RECV_"
                                  + PcDateUtils.getNowDateTimeStrConciseNoZone(),
                                  String.format(
                                          "POLL_COMPLETED_OR_ERROR: PROGRESS:%.3f, BODY:%s ",
                                          pollerData.getCurrentProgress(),
                                          responseContent));
              }
  
          }// end if (request.isPollable())
  
          reply(respOnSingleReq.isFailObtainResponse(),
                  respOnSingleReq.getErrorMessage(),
                  respOnSingleReq.getStackTrace(),
                  respOnSingleReq.getStatusCode(),
                  respOnSingleReq.getStatusCodeInt(),
                  respOnSingleReq.getReceiveTime(), respOnSingleReq.getResponseHeaders());
  
      }