-
Couldn't load subscription status.
- Fork 408
Description
Is your feature request related to a problem? Please describe.
Please allow users of firebase-admin-node to define their own default RetryConfig
Currently, users are forced to use the default RetryConfig:
export function defaultRetryConfig(): RetryConfig {
return {
maxRetries: 4,
statusCodes: [503],
ioErrorCodes: ['ECONNRESET', 'ETIMEDOUT'],
backOffFactor: 0.5,
maxDelayInMillis: 60 * 1000,
};
}Personal use case: I have a Node app where I want zero retries for Firebase HTTP requests. Retries create setTimeout timers that can cause I/O polling blocking of setImmediate according to the Event Loop. Thus, retries are causing hitches (ranging from hundreds of milliseconds to a few seconds) in my otherwise tight setImmediate loop, which I want to run as interrupted as possible
Describe the solution you'd like
Please somehow allow users to define their own RetryConfig, perhaps as a parameter when initalizing Firebase Admin:
import * as admin from 'firebase-admin';
const app = admin.initializeApp(
options?: admin.AppOptions | undefined, // perhaps include custom RetryConfig as a field in options?
// ...
)Describe alternatives you've considered
- Wrapping
firebase-admin-nodein aWorkerand usingComlinkto successfully prevent I/O polling blocking, but I'd rather avoid usingWorker - Rewriting a barebones Node Firebase Admin with only the API endpoints I need, but I'd much rather use the official
firebase-admin-node
Additional context