pub async fn check_reorg_presence(
        &mut self,
        mut stop_receiver: watch::Receiver<bool>,
    ) -> Result<bool, OrStopped> {
        while !*stop_receiver.borrow_and_update() {
            let sleep_interval = match self.find_last_diverged_batch().await {
                Err(err) => self.handle_hash_err(err).map_err(OrStopped::internal)?,
                Ok(maybe_diverged_batch) => return Ok(maybe_diverged_batch.is_some()),
            };

            if tokio::time::timeout(sleep_interval, stop_receiver.changed())
                .await
                .is_ok()
            {
                return Err(OrStopped::Stopped);
            }
        }
        Ok(false)
    }
Checks whether a reorg is present. Unlike [`Self::run_once()`], this method doesn't pinpoint the first diverged L1 batch;
it just checks whether diverged batches / blocks exist in general.

Internally retries transient errors.
core/node/reorg_detector/src/lib.rs