code: private Map<String, String> receiveCommandResult(HttpClientService csHttpClient, HttpClientInputs httpClientInputs,
                                                       String shellId, String commandId, WSManRequestInputs wsManRequestInputs) throws RuntimeException,
              IOException, URISyntaxException, TransformerException, TimeoutException, XPathExpressionException, SAXException,
              ParserConfigurationException, InterruptedException {
          String documentStr = ResourceLoader.loadAsString(RECEIVE_REQUEST_XML);
          documentStr = createReceiveRequestBody(documentStr, httpClientInputs.getUrl(), shellId, commandId, String.valueOf(wsManRequestInputs.getMaxEnvelopeSize()), wsManRequestInputs.getWinrmLocale(), String.valueOf(wsManRequestInputs.getOperationTimeout()));
          Map<String, String> receiveResult;
          while (true) {
              receiveResult = executeRequestWithBody(csHttpClient, httpClientInputs, documentStr);
              if (executionIsTimedOut(commandExecutionStartTime, wsManRequestInputs.getOperationTimeout())) {
                  throw new TimeoutException(EXECUTION_TIMED_OUT);
              } else if (WSManUtils.isSpecificResponseAction(receiveResult.get(RETURN_RESULT), RECEIVE_RESPONSE_ACTION) &&
                      WSManUtils.commandExecutionIsDone(receiveResult.get(RETURN_RESULT))) {
                  return processCommandExecutionResponse(receiveResult);
              } else if (WSManUtils.isFaultResponse(receiveResult.get(RETURN_RESULT))) {
                  throw new RuntimeException(WSManUtils.getResponseFault(receiveResult.get(RETURN_RESULT)));
              }
  
              try {
                  Thread.sleep(200);
              } catch (InterruptedException e) {
                  throw e;
              }
          }
  
      }
docs: Waits for a specific command that is running on a remote shell to finnish it's execution.
  
  @param csHttpClient
  @param httpClientInputs
  @param shellId
  @param commandId
  @param wsManRequestInputs
  @return the command execution result and exit code.
  @throws RuntimeException
  @throws IOException
  @throws URISyntaxException
  @throws TransformerException
  @throws TimeoutException
  @throws XPathExpressionException
  @throws SAXException
  @throws ParserConfigurationException
  @throws InterruptedException