code: func NewQueue(options ...func(*Queue) error) *Queue {
  	// Create a queue with the default values
  	q := &Queue{
  		sinkGen:      &dropErrClosedChanGen{},
  		broadcast:    events.NewBroadcaster(),
  		cancelFuncs:  make(map[events.Sink]func()),
  		limit:        0,
  		closeOutChan: false,
  	}
  
  	for _, option := range options {
  		err := option(q)
  		if err != nil {
  			panic(fmt.Sprintf("Failed to apply options to queue: %s", err))
  		}
  	}
  
  	return q
  }
docs: // NewQueue creates a new publish/subscribe queue which supports watchers.
  // The channels that it will create for subscriptions will have the buffer
  // size specified by buffer.