* Schedules the next fetch. * If no delay is provided, uses reloadInterval. * If delay is provided but very short (< 1 second), clamps to reloadInterval * to prevent hammering servers. * @param {number} [delay] - Delay in milliseconds
(delay)
| 109 | * @param {number} [delay] - Delay in milliseconds |
| 110 | */ |
| 111 | scheduleNextFetch (delay) { |
| 112 | let nextDelay = delay ?? this.reloadInterval; |
| 113 | |
| 114 | // Only clamp if delay is unreasonably short (< 1 second) |
| 115 | // This allows respecting Retry-After headers while preventing abuse |
| 116 | if (nextDelay < 1000) { |
| 117 | nextDelay = this.reloadInterval; |
| 118 | } |
| 119 | |
| 120 | // Don't schedule in test mode |
| 121 | if (process.env.mmTestMode === "true") { |
| 122 | return; |
| 123 | } |
| 124 | |
| 125 | this.reloadTimer = setTimeout(() => this.fetch(), nextDelay); |
| 126 | } |
| 127 | |
| 128 | /** |
| 129 | * Starts periodic fetching |
no test coverage detected