This changes the adhoc way in which request responses were handled
into a structured handling approach, where errors are thrown and
caught and returned as an object with standard properties, such as
'success', 'message', 'error', 'skipped', 'url'. This holds for
successful requests as well. This allows all errors to be bubbled
upwards in a structured and consistent way, so that frontend apps
that use this library can react to request responses in a systematic
way.