code: function (name, blobClient, descriptor) {
          this.name = name;
          this.blobClient = blobClient;
          this.blobClientPutFile = tasync.unwrap(tasync.throttle(tasync.wrap(blobClient.putFile), 5));
          this.blobClientGetMetadata = tasync.unwrap(tasync.throttle(tasync.wrap(blobClient.getMetadata), 5));
          // TODO: use BlobMetadata class here
          this.descriptor = descriptor || {
              name: name + '.zip',
              size: 0,
              mime: 'application/zip',
              content: {},
              contentType: 'complex'
          }; // name and hash pairs
      }
docs: Creates a new instance of artifact, i.e. complex object, in memory. This object can be saved in the blob-storage
  on the server and later retrieved with its metadata hash.
  @param {string} name Artifact's name without extension
  @param {BlobClient} blobClient
  @param {BlobMetadata} descriptor
  @constructor
  @alias Artifact