Shouldn't you be retrying if the status code is >= 500? Between 400 and 499 isn't it "user error" according to HTTP status codes?