| 'use strict'  | 
|   | 
| function InterceptorManager() {  | 
|     this.handlers = []  | 
| }  | 
|   | 
| /**  | 
|  * Add a new interceptor to the stack  | 
|  *  | 
|  * @param {Function} fulfilled The function to handle `then` for a `Promise`  | 
|  * @param {Function} rejected The function to handle `reject` for a `Promise`  | 
|  *  | 
|  * @return {Number} An ID used to remove interceptor later  | 
|  */  | 
| InterceptorManager.prototype.use = function use(fulfilled, rejected) {  | 
|     this.handlers.push({  | 
|         fulfilled,  | 
|         rejected  | 
|     })  | 
|     return this.handlers.length - 1  | 
| }  | 
|   | 
| /**  | 
|  * Remove an interceptor from the stack  | 
|  *  | 
|  * @param {Number} id The ID that was returned by `use`  | 
|  */  | 
| InterceptorManager.prototype.eject = function eject(id) {  | 
|     if (this.handlers[id]) {  | 
|         this.handlers[id] = null  | 
|     }  | 
| }  | 
|   | 
| /**  | 
|  * Iterate over all the registered interceptors  | 
|  *  | 
|  * This method is particularly useful for skipping over any  | 
|  * interceptors that may have become `null` calling `eject`.  | 
|  *  | 
|  * @param {Function} fn The function to call for each interceptor  | 
|  */  | 
| InterceptorManager.prototype.forEach = function forEach(fn) {  | 
|     this.handlers.forEach((h) => {  | 
|         if (h !== null) {  | 
|             fn(h)  | 
|         }  | 
|     })  | 
| }  | 
|   | 
| export default InterceptorManager  |