make sure to catch non-2xx responses