push httpStatusCode up through the returned NSError

Also uses default queue for callbacks, callers should handle thread
concerns