code: def wait_until_server_ready(
      host: str, port: int, timeout: float = 30, **kwargs: t.Any
  ) -> None:
      try:
          from .http import SyncHTTPClient
  
          SyncHTTPClient.wait_until_server_ready(
              host, port, timeout, **kwargs
          )
      except BadStatusLine:
          # when address is a RPC
          from .grpc import SyncGrpcClient
  
          SyncGrpcClient.wait_until_server_ready(
              host, port, timeout, **kwargs
          )
      except Exception as err:
          # caught all other exceptions
          logger.error("Failed to connect to server %s:%s", host, port)
          logger.error(err)
          raise
  
imports: from __future__ import annotations
  import functools
  import logging
  import typing
  from abc import ABC
  from abc import abstractmethod
  from http.client import BadStatusLine
  from ...exceptions import BentoMLException
  from ..service.inference_api import InferenceAPI
label_desc: Use image node_id 7 for calling the SyncClient obj's underlying member method code with example usage: obj.wait_until_server_ready(host, port, timeout) without return types