code: func NewBroadcaster(sinks ...Sink) *Broadcaster {
  	b := Broadcaster{
  		sinks:  sinks,
  		events: make(chan []Event),
  		closed: make(chan chan struct{}),
  	}
  
  	// Start the broadcaster
  	go b.run()
  
  	return &b
  }
docs: // NewBroadcaster ...
  // Add 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.