diff --git a/src/lib/device.ts b/src/lib/device.ts
index 8ea8e002a195d932122c6d7be7a076344e198a15..186bfe48b4a0ef347b132522d2633443227117d1 100644
--- a/src/lib/device.ts
+++ b/src/lib/device.ts
@@ -323,8 +323,6 @@ export default abstract class Device extends js.global.EventEmitter {
 
 	// Hot eats, cool treats
 	private dequeue(): void {
-		if (this.queueEvent > -1) return;
-
 		const buf = this.queue.shift();
 		if (buf === undefined) return;
 		this.sendToDevice(buf);
@@ -345,7 +343,9 @@ export default abstract class Device extends js.global.EventEmitter {
 		const header = [START1, START2, (data.length>>8)&0xFF, data.length&0xFF];
 		const buffer = new Uint8Array([...header, ...data]);
 		this.queue.push(buffer);
-		this.dequeue();
+		if (this.queueEvent < 0) {
+			this.queueEvent = js.setTimeout(this.dequeue, Math.max(200, 1000 - (Date.now() - this.lastWrite)), this);
+		}
 	}
 
 	/** Assembles a [MeshPacket](https://buf.build/meshtastic/protobufs/docs/main:meshtastic#meshtastic.MeshPacket) based on your parameters and writes it to the device. */