@@ -69,19 +69,25 @@ class AtomIoClient
6969 options = {
7070 url : " #{ @baseURL }#{ path} "
7171 headers : {' User-Agent' : navigator .userAgent }
72- json : true
7372 gzip : true
7473 }
7574
7675 request options, (err , res , body ) =>
7776 return callback (err) if err
7877
79- delete body .versions
80- cached =
81- data : body
82- createdOn : Date .now ()
83- localStorage .setItem (@ cacheKeyForPath (path), JSON .stringify (cached))
84- callback (err, cached .data )
78+ try
79+ # NOTE: request's json option does not populate err if parsing fails,
80+ # so we do it manually
81+ body = JSON .parse (body)
82+ delete body .versions
83+
84+ cached =
85+ data : body
86+ createdOn : Date .now ()
87+ localStorage .setItem (@ cacheKeyForPath (path), JSON .stringify (cached))
88+ callback (err, cached .data )
89+ catch error
90+ callback (error)
8591
8692 cacheKeyForPath : (path ) ->
8793 " settings-view:#{ path} "
@@ -199,7 +205,6 @@ class AtomIoClient
199205 url : " #{ @baseURL } packages/search"
200206 headers : {' User-Agent' : navigator .userAgent }
201207 qs : qs
202- json : true
203208 gzip : true
204209 }
205210
@@ -210,9 +215,17 @@ class AtomIoClient
210215 error .stderr = err .message
211216 reject error
212217 else
213- resolve (
214- body .filter (pkg) -> pkg .releases ? .latest ?
215- .map ({readme, metadata, downloads, stargazers_count}) ->
216- Object .assign metadata, {readme, downloads, stargazers_count}
217- .sort (a, b) -> b .downloads - a .downloads
218- )
218+ try
219+ # NOTE: request's json option does not populate err if parsing fails,
220+ # so we do it manually
221+ body = JSON .parse (body)
222+ resolve (
223+ body .filter (pkg) -> pkg .releases ? .latest ?
224+ .map ({readme, metadata, downloads, stargazers_count}) ->
225+ Object .assign metadata, {readme, downloads, stargazers_count}
226+ .sort (a, b) -> b .downloads - a .downloads
227+ )
228+ catch e
229+ error = new Error (" Searching for \u 201C#{ query} \u 201D failed." )
230+ error .stderr = e .message + ' \n ' + body
231+ reject error
0 commit comments