code: func (m *Broadcaster) distribute(event Event) {
  	m.lock.Lock()
  	defer m.lock.Unlock()
  	if m.fullChannelBehavior == DropIfChannelFull {
  		for _, w := range m.watchers {
  			select {
  			case w.result <- event:
  			case <-w.stopped:
  			default: // Don't block if the event can't be queued.
  			}
  		}
  	} else {
  		for _, w := range m.watchers {
  			select {
  			case w.result <- event:
  			case <-w.stopped:
  			}
  		}
  	}
  }
docs: // distribute sends event to all watchers. Blocking.