@@ -223,27 +223,27 @@ export class InterceptorService extends Http {
223223 private runBeforeInterceptors ( params : InterceptorRequest ) : Observable < InterceptorRequest > {
224224 let request$ : Observable < InterceptorRequest > = Observable . of ( params ) ;
225225
226- for ( let i = 0 ; i < this . interceptors . length ; i ++ ) {
227- const interceptor : Interceptor = this . interceptors [ i ] ;
226+ for ( let index = 0 ; index < this . interceptors . length ; index ++ ) {
227+ const interceptor : Interceptor = this . interceptors [ index ] ;
228228 if ( ! interceptor . beforeRequest ) {
229229 continue ;
230230 }
231231
232232 request$ = request$
233- . flatMap < InterceptorRequest , InterceptorRequest > ( ( request : InterceptorRequest , index : number ) => {
233+ . flatMap < InterceptorRequest , InterceptorRequest > ( ( request : InterceptorRequest , currentInterceptorIndex : number ) => {
234234 const requestInternalBuilder = InterceptorRequestBuilderInternal . new ( request ) ;
235235
236236 if ( requestInternalBuilder . getErr ( ) || requestInternalBuilder . getAlreadyShortCircuited ( ) ) {
237237 return Observable . of ( request ) ;
238238 } else if ( requestInternalBuilder . getShortCircuitAtCurrentStep ( ) ) {
239239 const requestBuilder = InterceptorRequestBuilderInternal . new ( request )
240240 . shortCircuitAtCurrentStep ( false )
241- . shortCircuitTriggeredBy ( this . interceptors . length - 1 ) // since the last interceptor in the chain asked for short circuiting
241+ . shortCircuitTriggeredBy ( currentInterceptorIndex - 1 ) // since the last interceptor requested for short circuit
242242 . alreadyShortCircuited ( true ) ;
243243 return Observable . of ( requestBuilder . build ( ) ) ;
244244 }
245245
246- const processedRequest = interceptor . beforeRequest ( request , index ) ;
246+ const processedRequest = interceptor . beforeRequest ( request , currentInterceptorIndex ) ;
247247 let processedRequest$ : Observable < InterceptorRequest > ;
248248
249249 if ( ! processedRequest ) { // if no request is returned; just proceed with the original request
@@ -257,7 +257,7 @@ export class InterceptorService extends Http {
257257 . catch ( ( err : any , caught : Observable < InterceptorRequest > ) => {
258258 const responseBuilder = InterceptorRequestBuilderInternal . new ( request )
259259 . err ( err )
260- . errEncounteredAt ( i ) ;
260+ . errEncounteredAt ( currentInterceptorIndex ) ;
261261 return Observable . of ( responseBuilder . build ( ) ) ;
262262 } ) ;
263263 } ) ;
@@ -296,9 +296,9 @@ export class InterceptorService extends Http {
296296 if ( interceptor . onForceCompleteOrForceReturn !== undefined ) {
297297 interceptor . onForceCompleteOrForceReturn ( transformedResponseWrapper , index ) ;
298298 }
299- if ( index === 0 ) {
299+ if ( index === 0 ) { // complete the observable, since this is the first interceptor (last in the response chain)
300300 return Observable . empty ( ) ;
301- } else {
301+ } else { // let `onForceCompleteOrForceReturn` on the interceptors be run
302302 return Observable . of ( transformedResponseWrapper ) ;
303303 }
304304 } else if ( transformedResponseWrapper . forceReturnResponse ) {
@@ -308,14 +308,11 @@ export class InterceptorService extends Http {
308308 return Observable . of ( transformedResponseWrapper ) ;
309309 }
310310
311- let processedResponse : void | InterceptorResponseWrapper | Observable < InterceptorResponseWrapper > ;
312-
313- const invokeErrHandler = transformedResponseWrapper . err && ! transformedResponseWrapper . response ;
314- const invokeShortCircuitHandler = transformedResponseWrapper . isShortCircuited ( ) && ! transformedResponseWrapper . response ;
311+ let processedResponse ;
315312
316- if ( invokeErrHandler ) {
317- processedResponse = interceptor . onErr ( transformedResponseWrapper ) ;
318- } else if ( invokeShortCircuitHandler ) {
313+ if ( transformedResponseWrapper . err ) {
314+ processedResponse = interceptor . onErr ( transformedResponseWrapper , index ) ;
315+ } else if ( transformedResponseWrapper . isShortCircuited ( ) ) {
319316 processedResponse = interceptor . onShortCircuit ( transformedResponseWrapper , index ) ;
320317 } else {
321318 processedResponse = interceptor . onResponse ( transformedResponseWrapper , index ) ;
@@ -334,7 +331,6 @@ export class InterceptorService extends Http {
334331 return procesedResponseWrapper$
335332 . catch ( ( err : any , __ : Observable < InterceptorResponseWrapper > ) => {
336333 const responseBuilder = InterceptorResponseWrapperBuilderInternal . newInternal ( index , transformedResponseWrapper )
337- . response ( undefined )
338334 . err ( err )
339335 . errEncounteredAt ( index )
340336 . errEncounteredInRequestCycle ( false ) ;
0 commit comments