code: function createQueue(name, options) {
    options = options || {};
    var attributes = [];
    function attr(name, value) { attributes.push({name: name, value: value}); }
    if (options.delay != null)
      attr('DelaySeconds', seconds(options.delay, 'delay', 0, 900));
    if (options.messageRetentionPeriod != null)
      attr('MessageRetentionPeriod', seconds(options.messageRetention, 'messageRetention', 60, 1209600));
    if (options.pollDuration != null)
      attr('ReceiveMessageWaitTimeSeconds', seconds(options.pollDuration, 'pollDuration', 0, 20));
    else
      attr('ReceiveMessageWaitTimeSeconds', 20);
    if (options.visibilityTimeout != null)
      attr('VisibilityTimeout', seconds(options.visibilityTimeout, 'visibilityTimeout', 0, 43200));
    if (options.maxMessageSize != null)
      attr('MaximumMessageSize', bytes(options.maxMessageSize, 'MaximumMessageSize', 1024, 65536));
  
    var query = {};
    query.QueueName = name;
    for (var i = 0; i < attributes.length; i++) {
      query['Attribute.' + (i+1) + '.Name'] = attributes[i].name;
      query['Attribute.' + (i+1) + '.Value'] = attributes[i].value;
    }
    var queueURL = call(this, 'CreateQueue', query)
      .then(function (res) {
        return res.CreateQueueResult.QueueUrl;
      });
    queueURL.toString = function () { return name; };
    return Queue(queueURL, this._keys.accessKey, this._keys.secretKey, this._keys.region);
  }
docs: ## Client#createQueue(name, options)
  
  Options:
  
  - delay
  - messageRetention
  - pollDuration
  - visibilityTimeout
  - maxMessageSize
  
  @param {string} name    string The name of the queue to create
  @param {object} options A hash of options
  @returns {Queue}