@scaleway/sdk-client
Version:
Scaleway SDK Client
26 lines (25 loc) • 1.04 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
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;
};
exports.composeRequestInterceptors = composeRequestInterceptors;
exports.composeResponseErrorInterceptors = composeResponseErrorInterceptors;
exports.composeResponseInterceptors = composeResponseInterceptors;