Rework xhr - cleaner, more flexible, better error handling
Extract json parsing to its own step. Remove unneeded protocols. Add chain* which can handle failure within the transform (ie. parse error)