code: func (a *customAdapter) exchangeMessage(ctx *customAdapterWorkerContext, req interface{}) (*customAdapterResponseMessage, error) {
  	err := a.sendMessage(ctx, req)
  	if err != nil {
  		return nil, err
  	}
  	return a.readResponse(ctx)
  }
docs: // exchangeMessage sends a message to a process and reads a response if resp != nil
  // Only fatal errors to communicate return an error, errors may be embedded in reply