async requestActiveBuffers( bufferHeaders, internalBuffer ) {

		const promises = [];
		for ( let i = 0; i < bufferHeaders.length; i ++ ) {

			const bufferHeader = bufferHeaders[ i ];
			// If the buffer is not active, resolve with undefined.
			if ( ! bufferHeader.isActive ) {

				promises.push( Promise.resolve( ) );

			} else if ( bufferHeader.isExternal ) {

				// Get the absolute URI of the external buffer.
				const url = this.parseImplicitURIBuffer(
					this.tile,
					this.rootTile.implicitTiling.subtrees.uri,
					bufferHeader.uri
				);

				const fetchPromise = fetch( url, this.fetchOptions )
					.then( response => {

						if ( ! response.ok ) {

							throw new Error( `SUBTREELoader: Failed to load external buffer from ${ bufferHeader.uri } with error code ${ response.status }.` );

						}
						return response.arrayBuffer();

					} )
					.then( arrayBuffer => new Uint8Array( arrayBuffer ) );

				promises.push( fetchPromise );

			} else {

				promises.push( Promise.resolve( new Uint8Array( internalBuffer ) ) );

			}

		}
		const bufferResults = await Promise.all( promises );
		const buffersU8 = {};
		for ( let i = 0; i < bufferResults.length; i ++ ) {

			const result = bufferResults[ i ];
			if ( result ) {

				buffersU8[ i ] = result;

			}

		}
		return buffersU8;

	}
Go through the list of buffers and gather all the active ones into
a dictionary.
<p>
The results are put into a dictionary object. The keys are indices of
buffers, and the values are Uint8Arrays of the contents. Only buffers
marked with the isActive flag are fetched.
</p>
<p>
The internal buffer (the subtree's binary chunk) is also stored in this
dictionary if it is marked active.
</p>
@param {BufferHeader[]} bufferHeaders The preprocessed buffer headers
@param {ArrayBuffer} internalBuffer The binary chunk of the subtree file
@returns {object} buffersU8 A dictionary of buffer index to a Uint8Array of its contents.
@private