const Redis = require('ioredis');

module.exports = url => {
  const redis = new Redis(url);

  redis.setJSON = async (...arguments) => {
    arguments[1] = JSON.stringify(arguments[1]);
    if (typeof arguments[2] === 'object' && arguments[2].asSeconds) {
      arguments[2] = parseInt(arguments[2].asSeconds());
    }
    if (typeof arguments[2] === 'number') {
      arguments[3] = parseInt(arguments[2]);
      arguments[2] = 'EX';
    }
    return await redis.set.apply(redis, arguments);
  }

  redis.getJSON = async key => {
    const value = await redis.get(key);
    if (value) {
      return JSON.parse(value);
    }
    return value;
  }

  return redis;
};

@@ -427,32 +427,133 @@
 %5D = 'EX';%0A    %7D%0A
+    if (typeof arguments%5B2%5D === 'undefined') %7B%0A      arguments = %5Barguments%5B0%5D, arguments%5B1%5D%5D;%0A    %7D%0A
     return await

Fix redis syntax error if third argument is undefined