Per-client queue for rate limiting?

I’d like to put a rate limit on incoming HTTP requests, but without sending 429 errors. Instead, requests beyond the limit should be put into a queue from which they are processed at a speed that respects the rate limit. It’s important that such a queue be per-client, so that clients don’t affect each other. Is this possible? It’s roughly what nginx’s burst/delay config does.