# RESP3 Support [RESP3](./RESP3.md) ```javascript const client = createClient({ RESP: 3 }); client.on('error', err => console.error(err)); await client.connect(); client.hGetAll('key'); // Record client.withFlags({ [TYPES.MAP]: Map }).hGetAll('key'); // Map client.withFlags({ [TYPES.MAP]: Map, [TYPES.BLOB_STRING]: Buffer }).hGetAll('key'); // Map ``` # `multi.exec<'typed'>` / `multi.execTyped` We have introduced the ability to perform a "typed" `MULTI`/`EXEC` transaction. Rather than returning `Array`, a transaction invoked with `.exec<'typed'>` will return types appropriate to the commands in the transaction where possible: ```javascript const multi = client.multi().ping(); await multi.exec(); // Array await multi.exec<'typed'>(); // [string] await multi.execTyped(); // [string] ``` # Request & Reply Policies see [here](../docs/clustering.md#command-routing).