docs: def cmd_block(self, is_retry=False):
          '''
          Prepare the pre-check command to send to the subsystem
  
          1. execute SHIM + command
          2. check if SHIM returns a master request or if it completed
          3. handle any master request
          4. re-execute SHIM + command
          5. split SHIM results from command results
          6. return command results
          '''
          self.argv = _convert_args(self.argv)
          log.debug(
              'Performing shimmed, blocking command as follows:\n%s',
              ' '.join([six.text_type(arg) for arg in self.argv])
          )
          cmd_str = self._cmd_str()
          stdout, stderr, retcode = self.shim_cmd(cmd_str)
  
          log.trace('STDOUT %s\n%s', self.target['host'], stdout)
          log.trace('STDERR %s\n%s', self.target['host'], stderr)
          log.debug('RETCODE %s: %s', self.target['host'], retcode)
  
          error = self.categorize_shim_errors(stdout, stderr, retcode)
          if error:
              if error == 'Python environment not found on Windows system':
                  saltwinshell.deploy_python(self)
                  stdout, stderr, retcode = self.shim_cmd(cmd_str)
                  while re.search(RSTR_RE, stdout):
                      stdout = re.split(RSTR_RE, stdout, 1)[1].strip()
                  while re.search(RSTR_RE, stderr):
                      stderr = re.split(RSTR_RE, stderr, 1)[1].strip()
              elif error == 'Undefined SHIM state':
                  self.deploy()
                  stdout, stderr, retcode = self.shim_cmd(cmd_str)
                  if not re.search(RSTR_RE, stdout) or not re.search(RSTR_RE, stderr):
                      # If RSTR is not seen in both stdout and stderr then there
                      # was a thin deployment problem.
                      return 'ERROR: Failure deploying thin, undefined state: {0}'.format(stdout), stderr, retcode
                  while re.search(RSTR_RE, stdout):
                      stdout = re.split(RSTR_RE, stdout, 1)[1].strip()
                  while re.search(RSTR_RE, stderr):
                      stderr = re.split(RSTR_RE, stderr, 1)[1].strip()
              else:
                  return 'ERROR: {0}'.format(error), stderr, retcode
  
          # FIXME: this discards output from ssh_shim if the shim succeeds.  It should
          # always save the shim output regardless of shim success or failure.
          while re.search(RSTR_RE, stdout):
              stdout = re.split(RSTR_RE, stdout, 1)[1].strip()
  
          if re.search(RSTR_RE, stderr):
              # Found RSTR in stderr which means SHIM completed and only
              # and remaining output is only from salt.
              while re.search(RSTR_RE, stderr):
                  stderr = re.split(RSTR_RE, stderr, 1)[1].strip()
  
          else:
              # RSTR was found in stdout but not stderr - which means there
              # is a SHIM command for the master.
              shim_command = re.split(r'\r?\n', stdout, 1)[0].strip()
              log.debug('SHIM retcode(%s) and command: %s', retcode, shim_command)
              if 'deploy' == shim_command and retcode == salt.defaults.exitcodes.EX_THIN_DEPLOY:
                  self.deploy()
                  stdout, stderr, retcode = self.shim_cmd(cmd_str)
                  if not re.search(RSTR_RE, stdout) or not re.search(RSTR_RE, stderr):
                      if not self.tty:
                          # If RSTR is not seen in both stdout and stderr then there
                          # was a thin deployment problem.
                          log.error(
                              'ERROR: Failure deploying thin, retrying:\n'
                              'STDOUT:\n%s\nSTDERR:\n%s\nRETCODE: %s',
                              stdout, stderr, retcode
                          )
                          return self.cmd_block()
                      elif not re.search(RSTR_RE, stdout):
                          # If RSTR is not seen in stdout with tty, then there
                          # was a thin deployment problem.
                          log.error(
                              'ERROR: Failure deploying thin, retrying:\n'
                              'STDOUT:\n%s\nSTDERR:\n%s\nRETCODE: %s',
                              stdout, stderr, retcode
                          )
                  while re.search(RSTR_RE, stdout):
                      stdout = re.split(RSTR_RE, stdout, 1)[1].strip()
                  if self.tty:
                      stderr = ''
                  else:
                      while re.search(RSTR_RE, stderr):
                          stderr = re.split(RSTR_RE, stderr, 1)[1].strip()
              elif 'ext_mods' == shim_command:
                  self.deploy_ext()
                  stdout, stderr, retcode = self.shim_cmd(cmd_str)
                  if not re.search(RSTR_RE, stdout) or not re.search(RSTR_RE, stderr):
                      # If RSTR is not seen in both stdout and stderr then there
                      # was a thin deployment problem.
                      return 'ERROR: Failure deploying ext_mods: {0}'.format(stdout), stderr, retcode
                  while re.search(RSTR_RE, stdout):
                      stdout = re.split(RSTR_RE, stdout, 1)[1].strip()
                  while re.search(RSTR_RE, stderr):
                      stderr = re.split(RSTR_RE, stderr, 1)[1].strip()
  
          return stdout, stderr, retcode