type future struct { completed bool result interface{} ch <-chan interface{} }
func (f *future) Wait() interface{} { v, ok := <- ch if ok { f.result = v; return v } else { return f.result } }