diff --git a/docs/FAQ.md b/docs/FAQ.md index 4b7710df3fc..5774213da5b 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -10,7 +10,7 @@ If don't want to queue commands in memory until a new socket is established, set ## How are commands batched? -Commands are pipelined using [`queueMicrotask`](https://nodejs.org/api/globals.html#globals_queuemicrotask_callback). +Commands are pipelined using [`setImmediate`](https://nodejs.org/api/timers.html#setimmediatecallback-args). If `socket.write()` returns `false`—meaning that ["all or part of the data was queued in user memory"](https://nodejs.org/api/net.html#net_socket_write_data_encoding_callback:~:text=all%20or%20part%20of%20the%20data%20was%20queued%20in%20user%20memory)—the commands will stack in memory until the [`drain`](https://nodejs.org/api/net.html#net_event_drain) event is fired. diff --git a/packages/client/lib/client/socket.ts b/packages/client/lib/client/socket.ts index 89533350f59..b079a51fea9 100644 --- a/packages/client/lib/client/socket.ts +++ b/packages/client/lib/client/socket.ts @@ -291,7 +291,7 @@ export default class RedisSocket extends EventEmitter { this.#socket.cork(); this.#isCorked = true; - queueMicrotask(() => { + setImmediate(() => { this.#socket?.uncork(); this.#isCorked = false; });