After many more hours and reading I have a solution, but from my research I figured out a lot of people struggle with this and Axios and Form Data doesn't have 100% compatibility
const concat = require("concat-stream")
const fd = new FormData()
fd.append("hello", "world")
fd.append("file", fs.createReadStream(file))
fd.pipe(concat(data => {
axios.post("/hello", data, {
headers: fd.getHeaders()
})
}))
If you are going to use binary files (image etc) like most people then your need to encode the concat stream to binary buffer:
fd.pipe(concat({encoding: 'buffer'}, data => {