From baf75c5b9b385ce8c19fae8c1198dd70e1d1549e Mon Sep 17 00:00:00 2001 From: Henri Bergius Date: Sat, 2 Aug 2025 07:35:39 -0400 Subject: [PATCH] Prevent reads from piling up --- packages/transport-http/src/transport.ts | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/transport-http/src/transport.ts b/packages/transport-http/src/transport.ts index 5616c1b4..b4591df0 100644 --- a/packages/transport-http/src/transport.ts +++ b/packages/transport-http/src/transport.ts @@ -6,6 +6,7 @@ export class TransportHTTP implements Types.Transport { private url: string; private receiveBatchRequests: boolean; private fetchInterval: number; + private fetching: boolean; public static async create( address: string, @@ -23,6 +24,7 @@ export class TransportHTTP implements Types.Transport { this.url = url; this.receiveBatchRequests = false; this.fetchInterval = 3000; + this.fetching = false; this._toDevice = new WritableStream({ write: async (chunk) => { @@ -39,7 +41,17 @@ export class TransportHTTP implements Types.Transport { }); setInterval(async () => { - await this.readFromRadio(controller); + if (this.fetching) { + // We still have the previous request open + return; + } + this.fetching = true; + try { + await this.readFromRadio(controller); + } catch (e) { + // TODO: Emit disconnection events for certain types of errors + } + this.fetching = false; }, this.fetchInterval); }