code: func (f *Future) GetResult() (interface{}, error) {
  	f.lock.Lock()
  	if f.triggered {
  		f.lock.Unlock()
  		return f.item, f.err
  	}
  	f.lock.Unlock()
  
  	f.wg.Wait()
  	return f.item, f.err
  }
docs: // GetResult will immediately fetch the result if it exists
  // or wait on the result until it is ready.