validateHeader = function(header, callback) {
	var HEADER_NAME_KEY = "name";
	var HEADER_VALUE_KEY = "value";
	var validKeys = [HEADER_NAME_KEY, HEADER_VALUE_KEY];
	var filteredKeys;

	if (!_.has(header, HEADER_NAME_KEY)) {
		return callback(
			new Error(
				'Unsupported Header option: missing required key "' +
					HEADER_NAME_KEY +
					'" in ' +
					JSON.stringify(header)
			)
		);
	}
	if (!_.has(header, HEADER_VALUE_KEY)) {
		return callback(
			new Error(
				'Unsupported Header option: missing required key "' +
					HEADER_VALUE_KEY +
					'" in ' +
					JSON.stringify(header)
			)
		);
	}

	filteredKeys = _.filter(_.keys(header), function(key) {
		return _.indexOf(validKeys, key) > -1;
	});

	_.forEach(filteredKeys, function(key) {
		if (!_.isString(header[key])) {
			return callback(
				new Error(
					"Unsupported Header option: value for " +
						key +
						" header must be a String " +
						header[key].toString()
				)
			);
		}
	});

	return true;
}
Validates a header option value provided for this item, throwing an error otherwise
@param header {Object} the header object to validate
@param callback {Function} a callback function to call when validation is complete
@return {Boolean}