class_docstr: Chain two or more waiting strategies.
  
  If all strategies are exhausted, the very last strategy is used
  thereafter.
  
  For example::
  
      @retry(wait=wait_chain(*[wait_fixed(1) for i in range(3)] +
                             [wait_fixed(2) for j in range(5)] +
                             [wait_fixed(5) for k in range(4)))
      def wait_chained():
          print("Wait 1s for 3 attempts, 2s for 5 attempts and 5s
                 thereafter.")
code: def __call__(self, retry_state):
      wait_func_no = min(
          max(retry_state.attempt_number, 1), len(self.strategies)
      )
      wait_func = self.strategies[wait_func_no - 1]
      return wait_func(retry_state=retry_state)
  
imports: import abc
  import random
  import six
  from tenacity import _utils
label_desc: Use image node_id 2 for calling the wait_chain obj's underlying member method code with example usage: obj.__call__(retry_state) and returns: wait_func