Improves error handling.

Catches errors in a better fashion from errors in remote api calls.
the response from the remote api can be inconsistent so it is better to pass the parsing error to the callback rather than throwing an exception