constructor(config, assetGraph) {
    super();
    if (!assetGraph) {
      throw new Error('2nd argument (assetGraph) is mandatory');
    }
    this.assetGraph = assetGraph;
    if (config.id) {
      this.id = config.id;
    } else {
      this.id = `${_.uniqueId()}`;
    }
    this.init(config);
  }
Create a new Asset instance.

Most of the time it's unnecessary to create asset objects
directly. When you need to manipulate assets that already exist on
disc or on a web server, the `loadAssets` and `populate` transforms
are the easiest way to get the objects created. See the section about
transforms below.

Note that the Asset base class is only intended to be used to
represent assets for which there's no specific subclass.

@constructor
@param {AssetConfig} config Configuration for instantiating an asset
@param {AssetGraph} assetGraph Mandatory AssetGraph instance references