docs: def multi_stream_iter(client, log_group, streams, positions=None):
      """Iterate over the available events coming from a set of log streams in a single log group
      interleaving the events from each stream so they're yielded in timestamp order.
  
      Args:
          client (boto3 client): The boto client for logs.
          log_group (str): The name of the log group.
          streams (list of str): A list of the log stream names. The position of the stream in this list is
                                 the stream number.
          positions: (list of Positions): A list of pairs of (timestamp, skip) which represents the last record
                                       read from each stream.
  
      Yields:
          A tuple of (stream number, cloudwatch log event).
      """
      positions = positions or {s: Position(timestamp=0, skip=0) for s in streams}
      event_iters = [log_stream(client, log_group, s, positions[s].timestamp, positions[s].skip) for s in streams]
      events = []
      for s in event_iters:
          if not s:
              events.append(None)
              continue
          try:
              events.append(next(s))
          except StopIteration:
              events.append(None)
  
      while some(events):
          i = argmin(events, lambda x: x['timestamp'] if x else 9999999999)
          yield (i, events[i])
          try:
              events[i] = next(event_iters[i])
          except StopIteration:
              events[i] = None