As far as I know, DeferredResult makes use of the underlying Servlet3's AsyncContext which should give you pretty decent throughput. How you process the request will probably determine how much throughput you can squeeze out of it - typically, if it's a blocking request, you'd send it away to a ThreadPool and your thread will return a CompletableFuture which will set the content of the DeferredResult
Spring Reactor is more geared towards building Async applications, have a look at Mono and Flux which makes use of the Reactor extensions: spring.io/blog/2016/09/22/new-in-spring-5-functio…
How scalable it is, is totally up to what you're actually doing after receiving that request.