Puppeteer: What is the method to download files with the headless Chrome API?

I'm trying to figure out how to enable file downloads in the headless Chrome browser using Puppeteer. What steps should I follow to ensure files are downloaded correctly? Additionally, is there a way to perform extra HTTP requests and store the responses that I receive?