When using makeWebRequest() to download workouts with response type HTTP_RESPONSE_CONTENT_TYPE_FIT in the simulator errors are reported back as expected via the responeCallback responseCode.
The http status code returned by the server is correctly reported in responseCode, for example 404 for a missing file or 500 for a server error.
But, this does not happen on real devices. I have tried on multiple devices of different types including both fenix and forerunner and they behave consistently.
Instead of reporting 404 in the responseCode when this is returned by the server, the responseCode gives 200, a valid iterator is returned, but there is no workout and next() returns null.
Instead of reporting 500, the responseCode gives zero which is an unknown error.
This makes error handling much harder, especially when you do not really know what to expect.