|  | @@ -473,7 +473,17 @@ AmberC.prototype.compile = function() {
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  		});
 | 
	
		
			
				|  |  | -		self.category_export();
 | 
	
		
			
				|  |  | +		category_export(self.defaults).then(function(resolve) {
 | 
	
		
			
				|  |  | +			return self.defaults;
 | 
	
		
			
				|  |  | +		}, function(error) {
 | 
	
		
			
				|  |  | +			console.error(error);
 | 
	
		
			
				|  |  | +		}).then(verify)
 | 
	
		
			
				|  |  | +		.then(function(resolve) {
 | 
	
		
			
				|  |  | +			return self.defaults;
 | 
	
		
			
				|  |  | +		}, function(error) {
 | 
	
		
			
				|  |  | +			console.error(error);
 | 
	
		
			
				|  |  | +		}).then(compose_js_files);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	});
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	this.defaults.compile.forEach(function(stFile) {
 | 
	
	
		
			
				|  | @@ -494,35 +504,34 @@ AmberC.prototype.compile = function() {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |   * Export compiled categories to JavaScript files.
 | 
	
		
			
				|  |  | - * Followed by verify().
 | 
	
		
			
				|  |  | + * Returns a Promise.all() object.
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  | -AmberC.prototype.category_export = function() {
 | 
	
		
			
				|  |  | -	var defaults = this.defaults;
 | 
	
		
			
				|  |  | -	var self = this;
 | 
	
		
			
				|  |  | -	// export categories as .js
 | 
	
		
			
				|  |  | -	async_map(defaults.compile, function(stFile, callback) {
 | 
	
		
			
				|  |  | -		var category = path.basename(stFile, '.st');
 | 
	
		
			
				|  |  | -		var jsFilePath = defaults.output_dir;
 | 
	
		
			
				|  |  | -		if (undefined === jsFilePath) {
 | 
	
		
			
				|  |  | -			jsFilePath = path.dirname(stFile);
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -		var jsFile = category + defaults.suffix_used + '.js';
 | 
	
		
			
				|  |  | -		jsFile = path.join(jsFilePath, jsFile);
 | 
	
		
			
				|  |  | -		defaults.compiled.push(jsFile);
 | 
	
		
			
				|  |  | -		var smalltalk = defaults.smalltalk;
 | 
	
		
			
				|  |  | -		var packageObject = smalltalk.Package._named_(category);
 | 
	
		
			
				|  |  | -		packageObject._transport()._namespace_(defaults.amd_namespace);
 | 
	
		
			
				|  |  | -		fs.writeFile(jsFile, smalltalk.String._streamContents_(function (stream) {
 | 
	
		
			
				|  |  | -			smalltalk.AmdExporter._new()._exportPackage_on_(packageObject, stream); }), function(err) {
 | 
	
		
			
				|  |  | -				callback(null, null);
 | 
	
		
			
				|  |  | +function category_export(configuration) {
 | 
	
		
			
				|  |  | +	return Promise.all(
 | 
	
		
			
				|  |  | +		configuration.compile.map(function(stFile) {
 | 
	
		
			
				|  |  | +			return new Promise(function(resolve, error) {
 | 
	
		
			
				|  |  | +				var category = path.basename(stFile, '.st');
 | 
	
		
			
				|  |  | +				var jsFilePath = configuration.output_dir;
 | 
	
		
			
				|  |  | +				if (undefined === jsFilePath) {
 | 
	
		
			
				|  |  | +					jsFilePath = path.dirname(stFile);
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +				var jsFile = category + configuration.suffix_used + '.js';
 | 
	
		
			
				|  |  | +				jsFile = path.join(jsFilePath, jsFile);
 | 
	
		
			
				|  |  | +				configuration.compiled.push(jsFile);
 | 
	
		
			
				|  |  | +				var smalltalk = configuration.smalltalk;
 | 
	
		
			
				|  |  | +				var packageObject = smalltalk.Package._named_(category);
 | 
	
		
			
				|  |  | +				packageObject._transport()._namespace_(configuration.amd_namespace);
 | 
	
		
			
				|  |  | +				fs.writeFile(jsFile, smalltalk.String._streamContents_(function (stream) {
 | 
	
		
			
				|  |  | +					smalltalk.AmdExporter._new()._exportPackage_on_(packageObject, stream);
 | 
	
		
			
				|  |  | +				}), function(err) {
 | 
	
		
			
				|  |  | +					if (err)
 | 
	
		
			
				|  |  | +						error(err);
 | 
	
		
			
				|  |  | +					else
 | 
	
		
			
				|  |  | +						resolve(true);
 | 
	
		
			
				|  |  | +				});
 | 
	
		
			
				|  |  |  			});
 | 
	
		
			
				|  |  | -	}, function(err, result){
 | 
	
		
			
				|  |  | -		verify(defaults).then(function(resolve) {
 | 
	
		
			
				|  |  | -			return defaults;
 | 
	
		
			
				|  |  | -		}, function(error) {
 | 
	
		
			
				|  |  | -			console.error(error);
 | 
	
		
			
				|  |  | -		}).then(compose_js_files);
 | 
	
		
			
				|  |  | -	});
 | 
	
		
			
				|  |  | +		})
 | 
	
		
			
				|  |  | +	);
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 |