send an error object in the callback if request fails

the requests that fail don't seem to get a JSON response anyway, so it's no
use trying to parse them. this only results in confusing err callbacks when
they contain a syntax error exception that resulted from trying to parse a
non-JSON response