code: def add_failed_check_attempt(self, reason=''):
          
          self.reachable = False
          self.attempt = self.attempt + 1
  
          logger.debug("Failed attempt for %s (%d/%d), reason: %s",
                       self.name, self.attempt, self.max_check_attempts, reason)
          # Don't need to warn again and again if the satellite is already dead
          # Only warn when it is alive
          if self.alive:
              if not self.stopping:
                  logger.warning("Add failed attempt for %s (%d/%d) - %s",
                                 self.name, self.attempt, self.max_check_attempts, reason)
              else:
                  logger.info("Stopping... failed attempt for %s (%d/%d) - also probably stopping",
                              self.name, self.attempt, self.max_check_attempts)
  
          # If we reached the maximum attempts, set the daemon as dead
          if self.attempt >= self.max_check_attempts:
              if not self.stopping:
                  logger.warning("Set %s as dead, too much failed attempts (%d), last problem is: %s",
                                 self.name, self.max_check_attempts, reason)
              else:
                  logger.info("Stopping... set %s as dead, too much failed attempts (%d)",
                              self.name, self.max_check_attempts)
  
              self.set_dead()
docs: Set the daemon as unreachable and add a failed attempt
          if we reach the maximum attempts, set the daemon as dead
  
          :param reason: the reason of adding an attempts (stack trace sometimes)
          :type reason: str
          :return: None