e() {
    const sync = gl.fenceSync(gl.SYNC_GPU_COMMANDS_COMPLETE, 0);
    gl.flush();

    let status;
    do {
        await wait();
        status = gl.clientWaitSync(sync, 0, 0);
    } while (status != gl.ALREADY_SIGNALED && status != gl.CONDITION_SATISFIED);
    gl.deleteSync(sync);
}

function checkGetBufferSubData(err, data) {
    dest.fill(0);
    wtu.shouldGenerateGLError(gl, err, "gl.getBufferSubData(gl.COPY_WRITE_BUFFER, 0, dest)");
    if (!err) {
        shouldBeTrue(`areArraysEqual(dest, ${dat