1. /**
  2. * Collects HTTP request metrics with timeout for maintenance tasks.
  3. * @param {function} requestFn - Function to execute the HTTP request. Returns a Promise.
  4. * @param {number} timeoutMs - Timeout in milliseconds.
  5. * @param {function} onComplete - Callback function executed on successful completion.
  6. * @param {function} onError - Callback function executed on error.
  7. */
  8. async function collectMaintenanceMetrics(requestFn, timeoutMs, onComplete, onError) {
  9. try {
  10. const timeoutPromise = new Promise((_, reject) => {
  11. setTimeout(() => {
  12. reject(new Error('Request timed out'));
  13. }, timeoutMs);
  14. });
  15. const result = await Promise.race([requestFn(), timeoutPromise]);
  16. onComplete(result); // Execute on success
  17. } catch (error) {
  18. onError(error); // Execute on error
  19. }
  20. }

Add your comment