docs: def random_chain(generators):
      """Generator to generate a set of keys from
      from a set of generators, each generator is selected
      at random and consumed to exhaustion.
      """
      while generators:
          g = random.choice(generators)
          try:
              v = g.next()
              if v is None:
                  continue
              yield v
          except StopIteration:
              generators.remove(g)