docs: def _get_service_names(self):
          """
          Get a list of service names from Sentinel. Tries Sentinel hosts until one succeeds; if none succeed,
          raises a ConnectionError.
  
          :return: the list of service names from Sentinel.
          """
          master_info = None
          connection_errors = []
          for sentinel in self._sentinel.sentinels:
              # Unfortunately, redis.sentinel.Sentinel does not support sentinel_masters, so we have to step
              # through all of its connections manually
              try:
                  master_info = sentinel.sentinel_masters()
                  break
              except (redis.ConnectionError, redis.TimeoutError) as e:
                  connection_errors.append('Failed to connect to {} due to error: "{}".'.format(sentinel, e))
                  continue
          if master_info is None:
              raise redis.ConnectionError(
                  'Could not get master info from Sentinel\n{}:'.format('\n'.join(connection_errors))
              )
          return list(master_info.keys())