Skip to content

Legacy command no longer call callback with error #2392

@msebire

Description

@msebire

Description

Since @redis/client 1.5.0, callback are no longer called when an error is thrown.

Issue can be reproduced using the following code:

  const client = createClient({ url, legacyMode: true });
  
  await client.connect();

  const result = await promisify(client.sendCommand).call(client, 'PING');
  console.log(`Result is ${result}`);

> OK "Result is PONG" is printed

  try {
    await promisify(client.sendCommand).call(client, 'FAIL');
  } catch (e) {
    console.log(`Error is ${e}`);
> KO, we never reach this code
  }

From what I was able to investigate, it seems the issue was introduced here: aa75ee49#diff-6674346081a0261b88e15fb0ae5a540ec522569c7310ff00a34b4b0c34a0c07aL316
as the catch mechanism to forward the error to the callback was removed.

To give you a bit more context on my use case, I encountered this issue because I use redlock as dependency of my project.
Redlock use the callback error mechanism to load scripts if they are missing.
https://github.com/mike-marcacci/node-redlock/blob/870778cd520f9649e80f74fa755ee0f12519c683/redlock.js#L455

Node.js Version

v19.4.0

Redis Server Version

6.2.10

Node Redis Version

4.6.1

Platform

windows

Logs

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions