lib/theme.js
function end (error) {
                _this._queueRunning = false;
                if (error) {
                    _this._taskQueue = [];
                    return;
                }
                // if (!taskPromisers.length) return;
                Promise.all(taskPromisers)
                    .then((responses)=>{
                        _this.emit('done', responses);
                        gutil.log(LOG_COLOR, gutil.colors.bold('Done'));
                    })
                    .catch((error)=>{
                        _this.emit('error', error);
                        gutil.log( new PluginError(PLUGIN_NAME, error, {showStack: true}) );
                    })
            }
function end (error) {
                _this._queueRunning = false;
                if (error) {
                    _this._taskQueue = [];
                    return;
                }
                // if (!taskPromisers.length) return;
                Promise.all(taskPromisers)
                    .then((responses)=>{
                        _this.emit('done', responses);
                        gutil.log(LOG_COLOR, gutil.colors.bold('Done'));
                    })
                    .catch((error)=>{
                        _this.emit('error', error);
                        gutil.log( new PluginError(PLUGIN_NAME, error, {showStack: true}) );
                    })
            }
/*
end() is reached *before* all files have finished uploading.
Promise.all() will complete once all tasks are finished or any error out.