be lax about our JSON, basically let anything through (see comment for details)
just do the < max retries, not <= the max retries
need an event for when the request actually fails, so that we can update the UI