code: def request_propagates(self, req_keys):
          
          i = 0
          for digest in req_keys:
              if digest not in self.requested_propagates_for:
                  if digest not in self.requests:
                      # Request from all nodes
                      self.request_msg(PROPAGATE, {f.DIGEST.nm: digest})
                  else:
                      # Request from nodes that didn't send
                      send_to = [conn for conn in self.nodestack.connecteds if
                                 conn not in self.requests[digest].propagates.keys()]
                      self.request_msg(PROPAGATE, {f.DIGEST.nm: digest}, frm=send_to)
  
                  self._add_to_recently_requested(digest)
                  i += 1
              else:
                  logger.debug('{} already requested PROPAGATE recently for {}'.
                               format(self, digest))
          return i
docs: Request PROPAGATEs for the given request keys. Since replicas can
          request PROPAGATEs independently of each other, check if it has
          been requested recently
          :param req_keys:
          :return: