class_docstr: Encapsulates the future value of a retriable async gRPC request.
  
  Abstracts over the set of futures returned by a set of gRPC calls
  comprising a single logical gRPC request with retries.  Communicates
  to the caller the result or exception resulting from the request.
  
  Args:
    completion_event: The constructor should provide a `threding.Event` which
      will be used to communicate when the set of gRPC requests is complete.
code: def __init__(self, completion_event):
      self._active_grpc_future = None
      self._active_grpc_future_lock = threading.Lock()
      self._completion_event = completion_event
  
imports: import enum
  import functools
  import random
  import threading
  import time
  import grpc
  from tensorboard import version
  from tensorboard.util import tb_logging
label_desc: Use image node_id 1 to create a new AsyncCallFuture object  with example: obj = AsyncCallFuture(completion_event)