requestAudioFile = function(that, callback){
	that.playable--;
	let decodedBufferPromise;
	if ( !that.useCache || !audioCache[that.source] ) {
		decodedBufferPromise = fetch(that.source).then((response)=>{
			return response.arrayBuffer()
		}).then((response)=>{
			return context.decodeAudioData(response)
		})
		if ( that.useCache ) {
			audioCache[that.source] = decodedBufferPromise
		}
	}
	else {
		decodedBufferPromise = audioCache[that.source]
	}

	decodedBufferPromise.then((decodedBuffer)=>{
		that.decodedBuffer = decodedBuffer;
		if ( that.env.hold === 3.14159 ) { // audio buffers should not use the default hold
			that.defaultEnv.hold = that.decodedBuffer.duration * ( 1 / that.rate );
			that.env.hold = that.decodedBuffer.duration * ( 1 / that.rate );
		}
		that.duration = that.env.hold * 1000;

		if ( callback ) { callback(that); }
		that.playable++;
		if ( that.playOnLoad ) { that.play(that.playOnLoadArg); }
	});
}
If the Wad uses an audio file as the source, request it from the server, 
or use a cached copy if available.
Don't let the Wad play until all necessary files have been downloaded. *