function BufferList(context, bufferData, options) {
  this._context = Utils.isAudioContext(context) ?
      context :
      Utils.throw('BufferList: Invalid BaseAudioContext.');

  this._options = {
    dataType: BufferDataType.BASE64,
    verbose: false,
  };

  if (options) {
    if (options.dataType &&
        Utils.isDefinedENUMEntry(BufferDataType, options.dataType)) {
      this._options.dataType = options.dataType;
    }
    if (options.verbose) {
      this._options.verbose = Boolean(options.verbose);
    }
  }

  this._bufferList = [];
  this._bufferData = this._options.dataType === BufferDataType.BASE64
      ? bufferData
      : bufferData.slice(0);
  this._numberOfTasks = this._bufferData.length;

  this._resolveHandler = null;
  this._rejectHandler = new Function();
}
BufferList object mananges the async loading/decoding of multiple
AudioBuffers from multiple URLs.
@constructor
@param {BaseAudioContext} context - Associated BaseAudioContext.
@param {string[]} bufferData - An ordered list of URLs.
@param {Object} options - Options
@param {string} [options.dataType='base64'] - BufferDataType specifier.
@param {Boolean} [options.verbose=false] - Log verbosity. |true| prints the
individual message from each URL and AudioBuffer.