code: def until(condition, fns):
      
      def f(msg):
          for fn in fns:
              seed = fn(msg)
              if condition(seed):
                  return seed
          return None
      return f
docs: Try a list of seeder functions until a condition is met.
  
      :param condition:
          a function that takes one argument - a seed - and returns ``True``
          or ``False``
  
      :param fns:
          a list of seeder functions
  
      :return:
          a "composite" seeder function that calls each supplied function in turn,
          and returns the first seed where the condition is met. If the condition
          is never met, it returns ``None``.