docs: def consume_socket_output(frames, demux=False):
      """
      Iterate through frames read from the socket and return the result.
  
      Args:
  
          demux (bool):
              If False, stdout and stderr are multiplexed, and the result is the
              concatenation of all the frames. If True, the streams are
              demultiplexed, and the result is a 2-tuple where each item is the
              concatenation of frames belonging to the same stream.
      """
      if demux is False:
          # If the streams are multiplexed, the generator returns strings, that
          # we just need to concatenate.
          return six.binary_type().join(frames)
  
      # If the streams are demultiplexed, the generator yields tuples
      # (stdout, stderr)
      out = [None, None]
      for frame in frames:
          # It is guaranteed that for each frame, one and only one stream
          # is not None.
          assert frame != (None, None)
          if frame[0] is not None:
              if out[0] is None:
                  out[0] = frame[0]
              else:
                  out[0] += frame[0]
          else:
              if out[1] is None:
                  out[1] = frame[1]
              else:
                  out[1] += frame[1]
      return tuple(out)