No, that's not how rack middleware works. If you have middleware M and rack app A:
server (Puma/Unicorn/etc.) calls M with request env hash
M does whatever it wants with request env hash
M calls A with (possibly modified) request env hash
A processes request env hash and returns rack response array
M receives rack response array from A
M does whatever it wants with the rack response array
M returns (possibly modified) rack response array
server receives rack response array from M
In this case, M is rack-cors and A is Roda.