/**
* Collects HTTP request metrics with timeout for maintenance tasks.
* @param {function} requestFn - Function to execute the HTTP request. Returns a Promise.
* @param {number} timeoutMs - Timeout in milliseconds.
* @param {function} onComplete - Callback function executed on successful completion.
* @param {function} onError - Callback function executed on error.
*/
async function collectMaintenanceMetrics(requestFn, timeoutMs, onComplete, onError) {
try {
const timeoutPromise = new Promise((_, reject) => {
setTimeout(() => {
reject(new Error('Request timed out'));
}, timeoutMs);
});
const result = await Promise.race([requestFn(), timeoutPromise]);
onComplete(result); // Execute on success
} catch (error) {
onError(error); // Execute on error
}
}
Add your comment