code: func NewBroadcaster(sinks ...Sink) *Broadcaster {
  	b := Broadcaster{
  		sinks:    sinks,
  		events:   make(chan Event),
  		adds:     make(chan configureRequest),
  		removes:  make(chan configureRequest),
  		shutdown: make(chan struct{}),
  		closed:   make(chan struct{}),
  	}
  
  	// Start the broadcaster
  	go b.run()
  
  	return &b
  }
docs: // NewBroadcaster appends one or more sinks to the list of sinks. The
  // broadcaster behavior will be affected by the properties of the sink.
  // Generally, the sink should accept all messages and deal with reliability on
  // its own. Use of EventQueue and RetryingSink should be used here.