Runs one weather round: fetches, sends the result on, and retries a failed fetch a few times.
The watch re-asks every few seconds until its first reading lands, so without a gate every ask
would start its own gps fix and provider fetch with its own retries and burn the provider quota.
A round stays in flight while it fetches or waits on a retry, and an unforced call in that time
is dropped. A forced round (a weather setting changed) replaces a running one, and the old
round's late result or pending retry is ignored. A watchdog closes a round whose fetch never
calls back.
Runs one weather round: fetches, sends the result on, and retries a failed fetch a few times.
The watch re-asks every few seconds until its first reading lands, so without a gate every ask would start its own gps fix and provider fetch with its own retries and burn the provider quota. A round stays in flight while it fetches or waits on a retry, and an unforced call in that time is dropped. A forced round (a weather setting changed) replaces a running one, and the old round's late result or pending retry is ignored. A watchdog closes a round whose fetch never calls back.