code: def open_multi(cls, sock, chunk_types, isattys, chunk_eof_type=None, buf_size=None,
                   select_timeout=None):
      
      cls._assert_aligned(chunk_types, isattys)
  
      # N.B. This is purely to permit safe handling of a dynamic number of contextmanagers.
      with ExitStack() as stack:
        read_fds, write_fds = list(zip(
          # Allocate one pipe pair per chunk type provided.
          *(stack.enter_context(_pipe(isatty)) for isatty in isattys)
        ))
        writer = NailgunStreamWriter(
          read_fds,
          sock,
          chunk_types,
          chunk_eof_type,
          buf_size=buf_size,
          select_timeout=select_timeout
        )
        with writer.running():
          yield write_fds, writer
docs: Yields the write sides of pipes that will copy appropriately chunked values to the socket.