Was investigating slow shutdown behavior on a keeper node and noticed the syncUpkeep and newRegistryFromChain paths pass nil CallOpts to GetUpkeep and GetConfig. Both functions receive a context from their caller but never thread it into the on-chain calls.
This means these RPCs ignore context cancellation entirely - on shutdown or job stop, they block until the RPC timeout (default 30s) instead of respecting the parent context. Under normal operation it's invisible, but during graceful shutdown with multiple registries syncing it adds up.
The ctx is right there in the function signature, just not wired through.