Chrome não mostra o arquivo como sendo baixado até que sejam enviados 8 bytes (o Firefox faz)

Eu quero ter um método http que envie o arquivo para o usuário, mas ele precisa de algum tempo (por exemplo, 4 segundos) para gerar o conteúdo do arquiv

O que eu quero é o navegador para mostrar instantaneamente o arquivo como sendo baixado. Mas o Chrome só mostra o arquivo como sendo baixado após o envio de 8 bytes. Não conheço os primeiros 8 bytes do meu arquivo antecipadamente. O Firefox, no entanto, mostra o download instantaneament

Aqui está o exemplo (no Express, mas a tecnologia de back-end não importa, eu tive o mesmo exemplo no ASP.Net):

const express = require('express');

const app = express();
const sleep = ms => new Promise(resolve => setTimeout(resolve, ms))

app.get('/:type?', async (req, res) =>  {
  res.set("Content-type", "application/octet-stream");
  res.set("Content-Disposition", "attachment;filename=\"Report.txt\"");

  res.write('1234567'); 
  if (req.params.type == "instant")
    res.write('8'); //if I send 8 bytes before sleep, file downloading appears instantly
  await sleep(4*1000);

  res.write('9');
  res.end();
});

app.listen(3000, () => {
  console.log('server started');
});

https: //repl.it/@ArturDrobinskiy/AllJumboSpellchecker? language = nodejs

Há uma maneira de resolver isto

Exemplo de URLs com o código acima:

7 bytes são enviados, o download não é instantâneo 8 bytes são enviados, o download inicia instantaneamente

questionAnswers(1)

yourAnswerToTheQuestion