@snap/camera-kit
Version:
Camera Kit Web
20 lines • 961 B
JavaScript
import { copyDefinedProperties } from "../common/copyDefinedProperties";
import { isString } from "../common/typeguards";
const sleep = (millis) => new Promise((resolve) => setTimeout(resolve, millis));
const defaultOptions = {
createError: (request) => {
const destination = isString(request)
? `for ${request}`
: request instanceof Request
? `for ${request.url}`
: "";
return new Error(`Request ${destination} timed out by client timeout handler.`);
},
timeout: 30 * 1000,
};
export const createTimeoutHandler = (options = {}) => {
const definedOptions = copyDefinedProperties(options);
const { createError, timeout } = Object.assign(Object.assign({}, defaultOptions), definedOptions);
return (next) => (req, meta) => Promise.race([next(req, meta), sleep(timeout).then(() => Promise.reject(createError(req, meta)))]);
};
//# sourceMappingURL=timeoutHandler.js.map