parseRetryAfter function
A Retry-After value in whole seconds: a non-negative integer as it is, an HTTP-date as the seconds from now
until it (rounded up, at least 0), anything else (or none) null.
Implementation
int? parseRetryAfter(String? value, {DateTime? now}) {
if (value == null) return null;
final text = value.trim();
if (RegExp(r'^\d+$').hasMatch(text)) return int.tryParse(text);
final date = _parseHttpDate(text);
if (date == null) return null;
final ms = date.difference((now ?? DateTime.now()).toUtc()).inMilliseconds;
return ms <= 0 ? 0 : (ms + 999) ~/ 1000;
}