After a fetch, If we got an HTTP status code >= 300, try to use the exception message when creating the Error object to have a meaningful message.
Get the exception message only if the returned mime type is JSON.
Note that if we get the message, the response body will be read so we need to store it on the Error also to avoid the body to be read again.