code: func (b *Buffer) ReadAndSubscribe(msgc chan<- *rfc5424.Message, donec <-chan struct{}) []*rfc5424.Message {
  	b.mu.RLock()
  	defer b.mu.RUnlock()
  
  	b.subscribe(msgc, donec)
  	return b.read()
  }
docs: // ReadAndSubscribe returns all buffered messages just like Read, and also
  // returns a channel that will stream new messages as they arrive.