How to get chunk size in POST request?

Hello there. I have a very simple PoC which is working in pure NodeJS, but its not clear how to make it in CF Workers.
So, user opens server sent event (SSE) connection and starts to upload data to server. Once server started to receive a data, it starts to send messages via (SSE) to client about chunk size which was just received on server.
How can I get chunk size in a realtime in Worker? I tried few different approaches, but no success here. In NodeJS I get chunk in the next way, but it doesnt work in CF

request
            .on('data', (chunk) => {
            })
            .on('end', () => {
            });

Sample of the code is below

Code
addEventListener('fetch', event => {
    event.respondWith(fetchAndApply(event))
})

async function fetchAndApply(event) {
    const { request } = event;
    const { method } = request;
    const pathname = new URL(request.url).pathname;
    let { readable, writable } = new TransformStream();

    // allow cors
    var headers = new Headers();
    headers.append('Cache-Control', 'no-cache');
    headers.append('Connection', 'keep-alive');
    headers.append('Access-Control-Allow-Origin', '*');
    headers.append('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');

    // open sse connection
    if (pathname === '/open' && method == 'GET') {
        headers.append('Content-Type', 'text/event-stream');
        var init = { "status": 200, "statusText": "ok", "headers": headers };
        const firstMessage = `data: Connection opened\n\n`;
        // send first message to client
        writeToStream(writable, firstMessage);
        return new Response(readable, init);
    }

    // upload
    else if (pathname === '/upload' && method == 'POST') {
        // it doesn't work
        request
            .on('data', (chunk) => {
                const data = {
                    size: chunk.length
                };
                writeToStream(writable, `data: ${JSON.stringify(data)}\n\n`);
            })
            .on('end', () => {
                var init = { "status": 200, "statusText": "ok", "headers": headers };
                console.log('end');
                return new Response('Done!', init);
            });
    }

    // default
    else {
        return new Response('Hello World!');
    }
}

async function writeToStream(writable, message) {
    let writer = writable.getWriter();
    await constructSSE(writer, message);
}

async function constructSSE(writer, message) {
    let encoder = new TextEncoder();
    await writer.write(encoder.encode(message));
}