code: func (asyncResult *AsyncResult) GetWithTimeout(timeoutDuration, sleepDuration time.Duration) ([]reflect.Value, error) {
  	timeout := time.NewTimer(timeoutDuration)
  
  	for {
  		select {
  		case <-timeout.C:
  			return nil, ErrTimeoutReached
  		default:
  			results, err := asyncResult.Touch()
  
  			if results == nil && err == nil {
  				time.Sleep(sleepDuration)
  			} else {
  				return results, err
  			}
  		}
  	}
  }
docs: // GetWithTimeout returns task results with a timeout (synchronous blocking call)