@@ -320,6 +320,11 @@ processes by reserving unused tokens.
320320 $limit->wait();
321321 } while (!$limit->isAccepted());
322322
323+ ..versionadded ::6.4
324+
325+ The support for the ``reserve() `` method for the ``SlidingWindow `` strategy
326+ was introduced in Symfony 6.4.
327+
323328Exposing the Rate Limiter Status
324329~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
325330
@@ -348,7 +353,7 @@ the :class:`Symfony\\Component\\RateLimiter\\Reservation` object returned by the
348353 $limit = $limiter->consume();
349354 $headers = [
350355 'X-RateLimit-Remaining' => $limit->getRemainingTokens(),
351- 'X-RateLimit-Retry-After' => $limit->getRetryAfter()->getTimestamp( ),
356+ 'X-RateLimit-Retry-After' => $limit->calculateTimeForTokens(1, 1 ),
352357 'X-RateLimit-Limit' => $limit->getLimit(),
353358 ];
354359
@@ -365,6 +370,19 @@ the :class:`Symfony\\Component\\RateLimiter\\Reservation` object returned by the
365370 }
366371 }
367372
373+ ..versionadded ::6.4
374+
375+ The:method: `Symfony\\ Component\\ RateLimiter\\ Policy\\ SlidingWindow::calculateTimeForTokens `
376+ method was introduced in Symfony 6.4.
377+
378+ ..deprecated ::6.4
379+
380+ The:method: `Symfony\\ Component\\ RateLimiter\\ Policy\\ SlidingWindow::getRetryAfter `
381+ method is deprecated since Symfony 6.4. Prior to this version, the
382+ ``getRetryAfter() `` method must be used instead of the
383+ :method: `Symfony\\ Component\\ RateLimiter\\ Policy\\ SlidingWindow::calculateTimeForTokens `
384+ method.
385+
368386.. _rate-limiter-storage :
369387
370388Storing Rate Limiter State