code: func NewBroadcaster(queueLength int, fullChannelBehavior FullChannelBehavior) *Broadcaster {
  	m := &Broadcaster{
  		watchers:            map[int64]*broadcasterWatcher{},
  		incoming:            make(chan Event, incomingQueueLength),
  		watchQueueLength:    queueLength,
  		fullChannelBehavior: fullChannelBehavior,
  	}
  	m.distributing.Add(1)
  	go m.loop()
  	return m
  }
docs: // NewBroadcaster creates a new Broadcaster. queueLength is the maximum number of events to queue per watcher.
  // It is guaranteed that events will be distributed in the order in which they occur,
  // but the order in which a single event is distributed among all of the watchers is unspecified.