code: func (a *agent) After() <-chan struct{} {
  	if a.stopCh != nil {
  		return a.stopCh
  	}
  	// The agent didn't start, so we can't return a.stopCh
  	// because *only* a.start() should allocate that
  	// we won't return a nil channel, because nil channels
  	// block forever.
  	// Since the normal pattern is to call a.After() so you
  	// can select till the agent is done and a.Stop() to
  	// retrieve the error, returning a closed channel will preserve that
  	// usage, as a.Stop() returns an error complaining that the agent
  	// never started.
  	ch := make(chan struct{})
  	close(ch)
  	return ch
  }
docs: // After returns a channel that will be closed when the agent is Stopped.
  // To retrieve any error from the agent stopping call Error() on the agent
  // The normal pattern of use is:
  //
  // agent := NewAgent(options...)
  // agent.Start()
  // select {
  // case <-agent.After() // Will wait till the agent is stopped
  // ...
  // }
  // err := agent.Error() // Will return any error from the agent being stopped
  //