code: func (q *TransmitLimitedQueue) Prune(maxRetain int) {
  	q.mu.Lock()
  	defer q.mu.Unlock()
  
  	// Do nothing if queue size is less than the limit
  	for q.tq.Len() > maxRetain {
  		item := q.tq.Max()
  		if item == nil {
  			break
  		}
  		cur := item.(*limitedBroadcast)
  		cur.b.Finished()
  		q.deleteItem(cur)
  	}
  }
docs: // Prune will retain the maxRetain latest messages, and the rest
  // will be discarded. This can be used to prevent unbounded queue sizes