mirror of
				https://github.com/public-transport/db-vendo-client.git
				synced 2025-11-04 01:56:33 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			41 lines
		
	
	
	
		
			922 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
	
		
			922 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import retry from 'p-retry';
 | 
						|
import {defaultProfile} from './lib/default-profile.js';
 | 
						|
 | 
						|
const retryDefaults = {
 | 
						|
	retries: 3,
 | 
						|
	factor: 3,
 | 
						|
	minTimeout: 5 * 1000,
 | 
						|
};
 | 
						|
 | 
						|
const withRetrying = (profile, retryOpts = {}) => {
 | 
						|
	retryOpts = Object.assign({}, retryDefaults, retryOpts);
 | 
						|
	// https://github.com/public-transport/hafas-client/issues/76#issuecomment-574408717
 | 
						|
	const {request} = {...defaultProfile, ...profile};
 | 
						|
 | 
						|
	const retryingRequest = (...args) => {
 | 
						|
		const attempt = () => {
 | 
						|
			return request(...args)
 | 
						|
				.catch((err) => {
 | 
						|
					if (err.isHafasError) {
 | 
						|
						throw err;
 | 
						|
					} // continue
 | 
						|
					if (err.code === 'ENOTFOUND') { // abort
 | 
						|
						const abortErr = new retry.AbortError(err);
 | 
						|
						Object.assign(abortErr, err);
 | 
						|
						throw abortErr;
 | 
						|
					}
 | 
						|
					throw err; // continue
 | 
						|
				});
 | 
						|
		};
 | 
						|
		return retry(attempt, retryOpts);
 | 
						|
	};
 | 
						|
 | 
						|
	return {
 | 
						|
		...profile,
 | 
						|
		request: retryingRequest,
 | 
						|
	};
 | 
						|
};
 | 
						|
 | 
						|
export {
 | 
						|
	withRetrying,
 | 
						|
};
 |