How are you testing this? In my testing firing up multiple browser windows all pointed at the same url results in the requests being handled in sequence, but this seems to be because the browser is only sending one request at a time (I’m using Chrome, I didn’t check any others).
Having multiple browser windows opening different urls on the server results in the requests being handled concurrently as expected (you can use the Sinatra splat
param to test this easily, with a route like get '/*/ do ...
).
Using curl
to send multiple requests at once, even all to the same url, also works as expected.