0.44.4

(fix): Non-2xx responses with a body are now returned as errors instead of successes. parse_response and parse_response_raw only consulted the status code inside their empty-body branch, so any error response that carried a payload was deserialized into the success type and returned Ok. When the success type can absorb an arbitrary object — all-optional fields, a bare Value, a defaulted collection — the call looked like an empty-but-successful result: a 401 surfaced as “no results found” and the process exited 0, which a calling script reads as “nothing to do”. The status is now checked before deserialization in both methods, and the response body is carried through as the ApiError::Http message so the server’s own error detail reaches the caller.

This also closes the gap left by the executor path: send_request short-circuits to executor.execute(...) when a custom RequestExecutor is installed, bypassing execute_with_retries — previously the only place the status was inspected. Checking in the parsers covers both paths.