docs: function evaluateScript(redis, script_name, keys, args, callback) {
    callback = onerror(callback)
    var sha = shas[script_name];
    if (sha) {
      // Script is loaded
      return evalSha(redis, sha, keys, args, callback);
    }
  
    readScript(script_name, function (err, script) {
      if (err) return err;
  
      var sha = shaify(script);
      checkLoaded(redis, script_name, sha, function (err, exists) {
        if (err) {
          return callback(err)
        }
        if (exists) {
          return evalSha(redis, sha, keys, args, callback);
        }
        // Load and then execute
        async.waterfall([
          _.bind(loadScript, null, redis, script_name, script),
          function (sha, cb) {
            evalSha(redis, sha, keys, args, cb);
          }
        ], callback);
      });
    });
  }