When more than one Middlewares are registered and one sets a parameter using the request.setParam() method, the next one loses it, so if it is not set again it never gets to the Service.
If the last Middleware sets the parameter it works ok, so it looks like the issue is in the Middleware reading existing parameters in the transport.