whole_func_string: 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}) );
                      })
              }
func_code_string: 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}) );
                      })
              }
func_documentation_string: /*
  end() is reached *before* all files have finished uploading.
  Promise.all() will complete once all tasks are finished or any error out.