RateLimiterRedis not working with ioredis
Not sure if due to recent changes in ioredis, but RateLimiterRedis is not working with ioredis 4.x.
The issue is how iosredis result format is handled in `RateLimiterRedis.js`

```
  _get(rlKey) {
    return new Promise((resolve, reject) => {
      this.client.multi()
        .get(rlKey)
        .pttl(rlKey)
        .exec((err, res) => {
          if (err) {
            reject(err);
          } else {
            const [points] = res;
            if (points === null) {
              res = null;
            } else {
              res.unshift('GET');
            }
            resolve(res);
          }
        });
    });
  }
```

A typical `res` value returned by ioredis would look like that: `[ [ null, '5' ], [ null, 275680 ] ]`
Thus in the code above, `points` will always be null.
In addition, the `res.unshift('GET')` is also incorrect, since the code in the `_getRateLimiterRes` method is expecting the first parameter to be an array in order to get recognize as an ioredis result format: 

```
 _getRateLimiterRes(rlKey, changedPoints, result) {
    let [resSet, consumed, resTtlMs] = result;
    // Support ioredis results format
    if (Array.isArray(resSet)) {
      [, resSet] = resSet;
      [, consumed] = consumed;
      [, resTtlMs] = resTtlMs;
    }
...
```

Fix is easy, but I am not sure how to PR without breaking non-ioredis redis clients.
In the meantime I fixed my code using this wrapping class:

```
class RateLimiterIoRedis extends RateLimiterRedis {
  async _get(rlKey) {
    const res = await this.client
      .multi()
      .get(rlKey)
      .pttl(rlKey)
      .exec();

    if (res[0][1] === null) {
      return null;
    }

    return [[null, 'GET'], ...res];
  }
}

const rateLimiter = new RateLimiterIoRedis();
```