@@ -84,19 +84,21 @@ describe('RESTController', () => {
8484  } ) ; 
8585
8686  it ( 'aborts after too many failures' ,  async  ( )  =>  { 
87-     expect . assertions ( 1 ) ; 
87+     expect . assertions ( 3 ) ; 
8888    mockFetch ( [ 
89-       {  status : 500  } , 
90-       {  status : 500  } , 
91-       {  status : 500  } , 
92-       {  status : 500  } , 
93-       {  status : 500  } , 
89+       {  status : 500 ,   response :  {   code :  1 ,   error :  'Internal server error.'   }  } , 
90+       {  status : 500 ,   response :  {   code :  1 ,   error :  'Internal server error.'   }  } , 
91+       {  status : 500 ,   response :  {   code :  1 ,   error :  'Internal server error.'   }  } , 
92+       {  status : 500 ,   response :  {   code :  1 ,   error :  'Internal server error.'   }  } , 
93+       {  status : 500 ,   response :  {   code :  1 ,   error :  'Internal server error.'   }  } , 
9494      {  status : 200 ,  response : {  success : true  }  } , 
9595    ] ) ; 
9696    try  { 
9797      await  RESTController . ajax ( 'POST' ,  'users' ,  { } ) ; 
9898    }  catch  ( fetchError )  { 
9999      expect ( fetchError ) . not . toBe ( undefined ) ; 
100+       expect ( fetchError . code ) . toBe ( 1 ) ; 
101+       expect ( fetchError . error ) . toBe ( 'Internal server error.' ) ; 
100102    } 
101103  } ) ; 
102104
@@ -178,6 +180,23 @@ describe('RESTController', () => {
178180    } 
179181  } ) ; 
180182
183+   it ( 'handles 5xx errors after retries' ,  async  ( )  =>  { 
184+     expect . assertions ( 2 ) ; 
185+     mockFetch ( [ 
186+       {  status : 500 ,  response : {  code : 1 ,  error : 'Internal server error.'  }  } , 
187+       {  status : 500 ,  response : {  code : 1 ,  error : 'Internal server error.'  }  } , 
188+       {  status : 500 ,  response : {  code : 1 ,  error : 'Internal server error.'  }  } , 
189+       {  status : 500 ,  response : {  code : 1 ,  error : 'Internal server error.'  }  } , 
190+       {  status : 500 ,  response : {  code : 1 ,  error : 'Internal server error.'  }  } , 
191+     ] ) ; 
192+     try  { 
193+       await  RESTController . request ( 'GET' ,  'classes/MyObject' ,  { } ,  { } ) ; 
194+     }  catch  ( error )  { 
195+       expect ( error . code ) . toBe ( 1 ) ; 
196+       expect ( error . message ) . toBe ( 'Internal server error.' ) ; 
197+     } 
198+   } ) ; 
199+ 
181200  it ( 'handles X-Parse-Job-Status-Id header' ,  async  ( )  =>  { 
182201    mockFetch ( [ {  status : 200 ,  response : {  results : [ ]  }  } ] ,  headers ) ; 
183202    const  response  =  await  RESTController . request ( 
0 commit comments