code: func New(c context.Context, gen Generator) *Promise {
  	p := Promise{
  		signalC: make(chan struct{}),
  	}
  
  	// Execute our generator function in a separate goroutine.
  	go p.runGen(c, gen)
  	return &p
  }
docs: // New instantiates a new, empty Promise instance. The Promise's value will be
  // the value returned by the supplied generator function.
  //
  // The generator will be invoked immediately in its own goroutine.