I’m surprised that you had trouble port forwarding on airvpn. My understanding is mullvad doesn’t allow port forwarding, and Proton allows it but it’s extremely finicky and you have to constantly poll for it with some script (or maybe if you use their official client then you don’t need that, but I didn’t). Port forwarding was, why I went with airvpn.









The alternative most people probably use is iterative loops, like for loops and while loops and the like, with a mutable variable somewhere. I don’t love it, personally.
I guess the other potential alternative is doing the iteration recursively, but I doubt that’s what most people think of as an alternative to reduce.