docs: function doExec(callback, command) {
      let args = Array.prototype.slice.call(arguments);
      args.splice(0, 2);  //remove the first cb and command
      if (!this.isConnected()) {
        return callback(thorin.error('REDIS.NOT_CONNECTED', 'The connection is not active yet.'));
      }
      command = command.toLowerCase();
      if (typeof this[connections].default.connection[command] !== 'function') {
        return callback(thorin.error('REDIS.COMMAND_NOT_FOUND', 'Invalid command issued: ' + command, 500));
      }
      args.push((err, res) => {
        if (err) {
          return callback(thorin.error('REDIS.EXEC', 'Redis command failed to execute.', err));
        }
        if (command === 'hgetall' && typeof res === 'object' && res) {
          // backward compatibility
          if (Object.keys(res).length === 0) {
            res = null;
          }
        }
        callback(null, res);
      });
      this[connections].default.emit('command', command, args);
      this[connections].default.connection[command].apply(this[connections].default.connection, args);
    }