@scaleway/sdk-client
Version:
Scaleway SDK Client
26 lines (25 loc) • 851 B
JavaScript
const composeRequestInterceptors = (interceptors) => async (request) => interceptors.reduce(
async (asyncResult, interceptor) => interceptor({ request: await asyncResult }),
Promise.resolve(request)
);
const composeResponseInterceptors = (interceptors) => async (response) => interceptors.reduce(
async (asyncResult, interceptor) => interceptor({ response: await asyncResult }),
Promise.resolve(response)
);
const composeResponseErrorInterceptors = (interceptors) => async (request, error) => {
let prevError = error;
for (const interceptor of interceptors) {
try {
const res = await interceptor({ request, error: prevError });
return res;
} catch (err) {
prevError = err;
}
}
throw prevError;
};
export {
composeRequestInterceptors,
composeResponseErrorInterceptors,
composeResponseInterceptors
};