The discussion on github, especially https://github.com/collective/collective.easyform/issues/175#issuecomment-582683716 , makes it very unlikely that
waitress is to blame. Almost surely,
z3c.form is the culprit. Explaining the content of the comment mentioned above a bit further: the normal behaviour of a form after an action is to rerender the form (unless the action tells that this should not be done, e.g. by redirecting to somewhere else). In your case, the download action apparently generates the CSV (writing the response, maybe using
Response.write) but forgets to tell the form that it should not rerender. Therefore, the form renders adding to the response. Before data can actually be sent to the browser, the headers, including
Content-Length must be generated. Thus, the first
Response.write will generate the headers (likely the download action has set this header); if afterwards additional output is produced for the response,
waitress logs a warning.