class_docstr: Random wait with exponentially widening window.
  
  An exponential backoff strategy used to mediate contention between multiple
  uncoordinated processes for a shared resource in distributed systems. This
  is the sense in which "exponential backoff" is meant in e.g. Ethernet
  networking, and corresponds to the "Full Jitter" algorithm described in
  this blog post:
  
  https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/
  
  Each retry occurs at a random time in a geometrically expanding interval.
  It allows for a custom multiplier and an ability to restrict the upper
  limit of the random interval to some maximum value.
  
  Example::
  
      wait_random_exponential(multiplier=0.5,  # initial window 0.5s
                              max=60)          # max 60s timeout
  
  When waiting for an unavailable resource to become available again, as
  opposed to trying to resolve contention for a shared resource, the
  wait_exponential strategy (which uses a fixed interval) may be preferable.
code: def __call__(self, retry_state):
      high = super(wait_random_exponential, self).__call__(
          retry_state=retry_state
      )
      return random.uniform(0, high)
  
imports: import abc
  import random
  import six
  from tenacity import _utils
label_desc: Use image node_id 1 for calling the wait_random_exponential obj's underlying member method code with example usage: obj.__call__(retry_state) and returns: random