code: func (e *Events) Subscribe() ([]eventtypes.Message, chan interface{}, func()) {
  	eventSubscribers.Inc()
  	e.mu.Lock()
  	current := make([]eventtypes.Message, len(e.events))
  	copy(current, e.events)
  	l := e.pub.Subscribe()
  	e.mu.Unlock()
  
  	cancel := func() {
  		e.Evict(l)
  	}
  	return current, l, cancel
  }
docs: // Subscribe adds new listener to events, returns slice of 256 stored
  // last events, a channel in which you can expect new events (in form
  // of interface{}, so you need type assertion), and a function to call
  // to stop the stream of events.