Dynamo this.client.updateItem is not a function
Hi, I'm receiving this error:

I'm following the [docs](https://github.com/animir/node-rate-limiter-flexible/wiki/DynamoDB); wondering if this error is due to aws-sdk v2 instead of v3?

v2: https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html#updateItem-property
v3: https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/dynamodb/command/UpdateItemCommand/

however the [package.json](https://github.com/animir/node-rate-limiter-flexible/blob/master/package.json#L46) has v3 so am a little confused and wondering if someone else has this issue 

```
TypeError: this.client.updateItem is not a function
          at RateLimiterDynamo._baseUpsert (/Users/skilbjo/dev/aws-lib/node_modules/rate-limiter-flexible/lib/RateLimiterDynamo.js:289:40)
          at RateLimiterDynamo._upsert (/Users/skilbjo/dev/aws-lib/node_modules/rate-limiter-flexible/lib/RateLimiterDynamo.js:261:27)
          at processTicksAndRejections (node:internal/process/task_queues:95:5)
```

`src` =>
```
export const getClient = ({
  deps,
  props,
  log,
}: {
  deps?: sdk.dependencyInjection.Dynamo;
  log?: Logger;
  props?: Partial<DynamoDBClientConfig>;
} = {}): DynamoDB => {
  return  new DynamoDB({
      apiVersion: '2012-08-10',
      logger: log,
      requestHandler: new NodeHttpHandler({
        connectionTimeout: dynamoTimeout.toMillis(),
        socketTimeout: dynamoTimeout.toMillis(),
      }),
};

const createRateLimiter = ({
  opts,
  rateLimitTableName,
  deps,
}: {
  deps?: sdk.dependencyInjection.Dynamo;
  opts: RateLimiterOpts;
  rateLimitTableName: string;
}): Promise<RateLimiterDynamo> => {
  const dynamoClient = getClient({ deps });

  return new Promise((resolve, reject) => {
    const rl = new RateLimiterDynamo(
      {
        ...opts,
        // inMemoryBlockOnConsumed: 50,
        dynamoTableOpts: {
          readCapacityUnits: 1, // default is 25
          writeCapacityUnits: 1, // default is 25
        },
        storeClient: dynamoClient,
        tableCreated: true,
        tableName: rateLimitTableName,
      },
      (err) => {
        if (err) reject(err);
        resolve(rl);
      }
    );
  });
}

export const testRateLimiter = async ({
  rateLimitTableName,
  deps,
}: {
  deps?: sdk.dependencyInjection.Dynamo;
  rateLimitTableName: string;
}): Promise<RateLimiterDynamo> =>
  createRateLimiter({
    deps,
    opts: { duration: joda.Duration.ofMinutes(1).toMillis() / 1000, points: 2 },
    rateLimitTableName,
  });

export const consume = async ({
  rateLimiter,
  rateLimitKey,
}: {
  rateLimitKey: string;
  rateLimiter: RateLimiterDynamo;
}) => {
  try {
    // await rateLimiter.consume(rateLimitKey);
    //
    rateLimiter
      .consume(rateLimitKey)
      .then((x) => {
        console.log({ x });
      })
      .catch((x) => {
        console.log({ x });
      });
  } catch (err) {
    console.log({ err });
    // something other than too many requests (ie problem connecting to db)
    if (!(err instanceof RateLimiterRes)) throw err;
  }
}
```

`test` =>
```
    const localClient = new DynamoDB(localClientConfig);

    const rateLimiter = await src.testRateLimiter({
      deps: { dynamoClient: localClient },
      rateLimitTableName,
    });

    const actual = await src.consume({ rateLimitKey: 'test', rateLimiter });
```
