docs: def ttl(self):
          """Milliseconds until metadata should be refreshed"""
          now = time.time() * 1000
          if self._need_update:
              ttl = 0
          else:
              metadata_age = now - self._last_successful_refresh_ms
              ttl = self.config['metadata_max_age_ms'] - metadata_age
  
          retry_age = now - self._last_refresh_ms
          next_retry = self.config['retry_backoff_ms'] - retry_age
  
          return max(ttl, next_retry, 0)