code: func (b *baseToken) WaitTimeout(d time.Duration) bool {
  	b.m.Lock()
  	defer b.m.Unlock()
  
  	timer := time.NewTimer(d)
  	select {
  	case <-b.complete:
  		if !timer.Stop() {
  			<-timer.C
  		}
  		return true
  	case <-timer.C:
  	}
  
  	return false
  }
docs: // WaitTimeout takes a time.Duration to wait for the flow associated with the
  // Token to complete, returns true if it returned before the timeout or
  // returns false if the timeout occurred. In the case of a timeout the Token
  // does not have an error set in case the caller wishes to wait again