Respuesta de escritura http de Golang sin esperar a terminar

Estoy creando una aplicación que crea un archivo pdf y lo devuelve al cliente cada vez que recibe una solicitud.

Dado que algunos de estos archivos pdf pueden tardar un tiempo en generarse, me gustaría enviar periódicamente algún tipo de actualización de estado al cliente mientras se está ejecutando.

Cuando termine de construir el archivo pdf, también debe devolverse al cliente.

Algo parecido a:

func buildReport(writer http.ResponseWriter, request *http.Request){
    //build pdf build pdf file
    for { //for example purposes only
        writer.Write([]byte("building. Please wait."))
    }
    pdf.OutputFileAndClose("report.pdf")
    //set header to pdf so that the client knows it's a PDF
    writer.Header().Set("Content-Type", "application/pdf")
    http.ServeFile(writer, request, "report.pdf")
}

func main() {
    http.HandleFunc("/", buildReport)
    http.ListenAndServe(":8081", nil)
}

Es posible que configurar el encabezado no funcione, ya que el escritor solo puede tener un encabezado.

Respuestas a la pregunta(3)

Su respuesta a la pregunta