See sinatra/sinatra#1832 for more details but this simple app https://github.com/sinatra/sinatra/blob/v3.0.2/examples/stream.ru works fine with Puma 5.6.5 but with 6.0.0 it waits until all sleeps have finished before the response is returned (this is more noticeable if you increase the sleep time in the example).
As noted in sinatra/sinatra#1832 (comment) the example runs as expected in falcon (v0.42.3).