code: func synchronousEvent(c *asticontext.Canceller, l listenable, w *writer, i Event, eventNameDone string) (o Event, err error) {
  	o = synchronousFunc(c, l, func() {
  		if err = w.write(i); err != nil {
  			err = errors.Wrapf(err, "writing %+v event failed", i)
  			return
  		}
  		return
  	}, eventNameDone)
  	return
  }
docs: // synchronousEvent sends an event, blocks until it has received a specific event or the canceller has been cancelled
  // and returns the corresponding event