code: func (p *pullMediatorImpl) SendRes(items []string, context interface{}, nonce uint64) {
  	items2return := []*proto.Envelope{}
  	p.RLock()
  	defer p.RUnlock()
  	for _, item := range items {
  		if msg, exists := p.itemID2Msg[item]; exists {
  			items2return = append(items2return, msg.Envelope)
  		}
  	}
  	returnedUpdate := &proto.GossipMessage{
  		Channel: p.config.Channel,
  		Tag:     p.config.Tag,
  		Nonce:   0,
  		Content: &proto.GossipMessage_DataUpdate{
  			DataUpdate: &proto.DataUpdate{
  				MsgType: p.config.MsgType,
  				Nonce:   nonce,
  				Data:    items2return,
  			},
  		},
  	}
  	remotePeer := context.(proto.ReceivedMessage).GetConnectionInfo()
  	p.logger.Debug("Sending", len(returnedUpdate.GetDataUpdate().Data), p.config.MsgType, "items to", remotePeer)
  	context.(proto.ReceivedMessage).Respond(returnedUpdate)
  }
docs: // SendRes sends an array of items to a remote PullEngine identified by a context.