File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -179,6 +179,15 @@ function sendErrorPayload(url, payload) {
179179 var code = xhr . status ;
180180 if ( code >= 200 && code < 300 ) {
181181 resolve ( { message : payload . message } ) ;
182+ } else if ( code === 429 ) {
183+ // HTTP 429 responses are returned by Stackdriver when API quota
184+ // is exceeded. We should not try to reject these as unhandled errors
185+ // or we may cause an infinite loop with 'reportUncaughtExceptions'.
186+ reject (
187+ {
188+ message : 'quota or rate limiting error on stackdriver report' ,
189+ name : 'Http429FakeError' ,
190+ } ) ;
182191 } else {
183192 var condition = code ? code + ' http response' : 'network error' ;
184193 reject ( new Error ( condition + ' on stackdriver report' ) ) ;
Original file line number Diff line number Diff line change @@ -249,6 +249,24 @@ describe('Reporting errors', function() {
249249 expect ( err . message ) . to . equal ( '503 http response on stackdriver report' ) ;
250250 } ) ;
251251 } ) ;
252+
253+ it ( 'should not handle quota exceeded error responses' , function ( ) {
254+ requestHandler = function ( req ) {
255+ // HTTP 429 returned from Stackdriver after reaching reporting quota.
256+ req . respond ( 429 , { 'Content-Type' : 'text/plain' } , '' ) ;
257+ } ;
258+ errorHandler . start ( { key : 'key' , projectId : 'projectId' } ) ;
259+ var message = 'News that will be rejected on send' ;
260+ return errorHandler . report ( message ) . then ( function ( ) {
261+ throw new Error ( 'unexpected fulfilled report' ) ;
262+ } , function ( fakeErr ) {
263+ expectRequestWithMessage ( message ) ;
264+ // We don't expect an Error to be returned in this case.
265+ expect ( fakeErr . name ) . to . equal ( 'Http429FakeError' ) ;
266+ expect ( fakeErr . message ) . to . equal (
267+ 'quota or rate limiting error on stackdriver report' ) ;
268+ } ) ;
269+ } ) ;
252270 } ) ;
253271 } ) ;
254272
You can’t perform that action at this time.
0 commit comments