code: func (twg *TimeoutWaitGroup) Wait(waitDuration time.Duration) int {
  	twg.mutex.Lock()
  	if twg.workers == 0 {
  		twg.mutex.Unlock()
  		return 0
  	}
  	// Don't make the chan unless its needed. This lets us avoid a constructor
  	if twg.last == nil {
  		twg.last = make(chan struct{})
  	}
  	timeout := time.After(waitDuration)
  	twg.mutex.Unlock()
  	select {
  	case <-twg.last:
  	case <-timeout:
  	}
  	twg.mutex.Lock()
  	defer twg.mutex.Unlock()
  	return twg.workers
  }
docs: // Wait blocks until waitDuration has passed or all workers have called Done(),
  // which ever comes first.  Wait returns the number of