A custom block or denial page may call Cloudflare APIs to resolve a rule name, device name or other reference data.

A transient API error should not immediately destroy the experience, but unlimited retries are worse: the user waits on a page whose underlying security decision has already been made.

I prefer a bounded pattern:

lookup
  ↓ fail
short delay

retry
  ↓ fail
fallback value

The fallback should preserve whatever identifier is already available.

For example:

rule-name lookup succeeds → "Block Newly Registered Domains"
lookup fails              → "Rule <uuid>"

That keeps enrichment helpful without making it critical-path infrastructure.

The key distinction is that retry behaviour improves diagnostics; it must never change the original allow/deny decision.

Related: Cloudflare Gateway Custom Block Page.