code: func tryReceive(c chan result, ns time.Duration) (v interface{}, error Error, timedout bool) {
  	//	timer := NewTimer(ns)
  	select {
  	case fv := <-c:
  		if fv.e != nil {
  			error = fv.e
  		} else {
  			v = fv.v
  		}
  		//	case to := <-timer:
  	case to := <-time.After(ns):
  		timedout = true
  		if debug() {
  			log.Println("resultchan.TryGet() -- timedout waiting for futurevaluechan | timeout: ", to)
  		}
  	}
  	return
  }
docs: // using a timer blocks on the channel until a result is received.
  // or timeout period expires.
  // if timedout, returns timedout==true.
  // otherwise,
  // If the received result reference's e (error) field is not null,
  // it will return it.
  //
  // For now presumably a nil result is OK and if error is nil, the return
  // value v is the intended result, even if nil.