I don't know the GraphQL best practices, but when something is wrong in HTTP communication, you have to classify the error type with the status code. I believe GraphQL doesn't need to be like REST applications, but it seems intuitive to have a status code 500 with an error description in the body content following the standards on the link above.