If an RPC client sends a lot of messages but the target server cannot process them quickly enough, the unsent messages accumulate on the router, which can lead to unbounded memory consumption.
One potential solution to this issue is to track, for each client connection, the number of messages waiting to be forwarded, which are the messages read from a client but not yet sent to the destination. If this number reaches a certain threshold, the router will pause reading from the client until the count drops below the threshold again.