docstr: If attr is callable, wrap it into an async function.
docstr_tok: ["If","attr","is","callable",",","wrap","it","into","an","async","function","."]
code: def __getattr__(self, name):
      """
      If attr is callable, wrap it into an async function.
      """
      attr = getattr(self.inner, name)
      if callable(attr):
          return self._function_to_async(attr)
      else:
          return attr
  
file_path: ray/python/ray/_private/gcs_aio_client.py
imports: import logging
  from typing import Dict, List, Optional
  from concurrent.futures import ThreadPoolExecutor
  from ray._raylet import GcsClient
  from ray.core.generated import gcs_pb2
  import ray._private.utils
  from ray._private.ray_constants import env_integer
label_desc: Use image node_id 3 for calling the AsyncProxy obj's underlying member method code with example usage: obj.__getattr__(name) and returns: self, attr