code: func NewLinkWithSession(conn *amqp.Client, session *amqp.Session, address string) (*Link, error) {
  
  	authSender, err := session.NewSender(
  		amqp.LinkTargetAddress(address),
  	)
  	if err != nil {
  		return nil, err
  	}
  
  	linkID, err := uuid.NewV4()
  	if err != nil {
  		return nil, err
  	}
  
  	id := linkID.String()
  	clientAddress := strings.Replace("$", "", address, -1) + replyPostfix + id
  	authReceiver, err := session.NewReceiver(
  		amqp.LinkSourceAddress(address),
  		amqp.LinkTargetAddress(clientAddress),
  	)
  	if err != nil {
  		return nil, err
  	}
  
  	return &Link{
  		sender:        authSender,
  		receiver:      authReceiver,
  		session:       session,
  		clientAddress: clientAddress,
  		id:            id,
  	}, nil
  }
docs: // NewLinkWithSession will build a new request response link, but will reuse an existing AMQP session