code: def sync_proxy(self, mri, block):
          
          done_queue = Queue()
          self._queues[mri] = done_queue
          update_fields = set()
  
          def callback(value=None):
              if isinstance(value, Exception):
                  # Disconnect or Cancelled or RemoteError
                  if isinstance(value, Disconnected):
                      # We will get a reconnect with a whole new structure
                      update_fields.clear()
                      block.health.set_value(
                          value="pvAccess disconnected",
                          alarm=Alarm.disconnected("pvAccess disconnected")
                      )
              else:
                  with block.notifier.changes_squashed:
                      if not update_fields:
                          self.log.debug("Regenerating from %s", list(value))
                          self._regenerate_block(block, value, update_fields)
                          done_queue.put(None)
                      else:
                          self._update_block(block, value, update_fields)
  
          m = self._ctxt.monitor(mri, callback, notify_disconnect=True)
          self._monitors.add(m)
          done_queue.get(timeout=DEFAULT_TIMEOUT)
docs: Abstract method telling the ClientComms to sync this proxy Block
          with its remote counterpart. Should wait until it is connected
  
          Args:
              mri (str): The mri for the remote block
              block (BlockModel): The local proxy Block to keep in sync