safeNetworkCall
Runs riskyBlock (an HTTP call) via safeResult, additionally treating a non-2xx response as a failure — turning it into a failed Result carrying a NetworkResponseException (with the response's status and body text) rather than a successful Result wrapping an error response.