code: func (b *Buffer) Subscribe(msgc chan<- *rfc5424.Message, donec <-chan struct{}) {
  	b.mu.RLock()
  	defer b.mu.RUnlock()
  
  	b.subscribe(msgc, donec)
  }
docs: // Subscribe returns a channel that sends all future messages added to the
  // Buffer. The returned channel is buffered, and any attempts to send new
  // messages to the channel will drop messages if the channel is full.
  //
  // The caller closes the donec channel to stop receiving messages.