code: function(argv_, context, callback, awsName, awsFnName_) {
    var argv            = sg.deepCopy(argv_);
    var awsFnName       = awsFnName_ || 'describe'+awsName;
  
    // The AWS EC2 service
    var awsEc2          = awsService('EC2', extractServiceArgs(argv));
  
    var result;
    return sg.until(function(again, last) {
      return awsEc2[awsFnName](argv || {}, function(err, x) {
        if (err) {
          if (err.code === 'RequestLimitExceeded')    { return again(250); }
  
          /* otherwise */
          return die(err, callback, 'ec2.getX2.awsEc2.'+awsFnName);
        }
  
        result = awsJsonLib.awsToJsObject(x);
        result = result[awsName] || result;
  
        return last();
      });
    }, function(err) {
      return callback(err, result);
    });
  }
docs: Invoke one of the describe-X functions.
  
  @param {Object} argv          - Run-anywhere style argv object.
  @param {Object} context       - Run-anywhere style context object.
  @param {Function} callback    - Run-anywhere style callback.
  @param {string} awsName       - The name of the thing to be described, like "Instances".
  @param {string} [awsFnName]   - Sometimes, you cannot just paste "describe"+awsName to get the right function.