async exec(keys, args) {
    const res = await this.redis.evalsha(this.sha1, keys, args).catch(async (error) => {
      if (error instanceof Error && error.message.toLowerCase().includes("noscript")) {
        return await this.redis.eval(this.script, keys, args);
      }
      throw error;
    });
    return res;
  }
Optimistically try to run `EVALSHA` first.
If the script is not loaded in redis, it will fall back and try again with `EVAL`.

Following calls will be able to use the cached script