errors[0].message first. The HTTP status is 200 for many GraphQL mistakes and 401 when the credential itself was rejected.
data can be null for the field that failed and still be present. Do not treat a body that contains errors as success.
What to change
A query can return both
data and errors when one field failed and another did not. Check errors even when data is present.