node has Readable.toWeb() which is supposed to do exactly what i need but is like 3x slower than any other method and also broken for me (image get served but is blank)
that's pretty much exactly one of the solutions i also came up with, but it's slightly slower than http.createServer (running with node) + sharpObject.pipe(res)