code: func (s *Subscription) Poll(timeout time.Duration) (Event, error) {
  	dl.Debugln("poll", timeout)
  
  	s.timeout.Reset(timeout)
  
  	select {
  	case e, ok := <-s.events:
  		if !ok {
  			return e, ErrClosed
  		}
  		if runningTests {
  			// Make the behavior stable when running tests to avoid randomly
  			// varying test coverage. This ensures, in practice if not in
  			// theory, that the timer fires and we take the true branch of
  			// the next if.
  			s.timeout.Reset(0)
  			runtime.Gosched()
  		}
  		if !s.timeout.Stop() {
  			// The timeout must be stopped and possibly drained to be ready
  			// for reuse in the next call.
  			<-s.timeout.C
  		}
  		return e, nil
  	case <-s.timeout.C:
  		return Event{}, ErrTimeout
  	}
  }
docs: // Poll returns an event from the subscription or an error if the poll times
  // out of the event channel is closed. Poll should not be called concurrently
  // from multiple goroutines for a single subscription.