first of all, thanks for posting and bringing this up.
I think checking for the HTTP status code and using an IF Switch or Row Filter is the most reasonable way to go. Of course, it always costs some time to add additional nodes and it would be great if the node could handle all this.
But consider this: an empty JSON/XML/binary is semantically different from no response. The former indicates a response absent of information, the latter that no response could be obtained.
Which value you fall back to and whether you do this at all depends on the specific use case. As such, I currently think that handling that explicitly in your workflow is the most adequate way to implement this.
The next idea that comes to mind is that instead of trying to find a reasonable fallback value, we output a missing value and let the user fixate the type of the response column. This would allow such loops as in the original post – but you would still need to check for the missing value. You do not gain anything in this case since you might as well check for the HTTP status, which even more precisely describes the status of your request.
Would love to hear your thoughts about this.