Too nice : )
I could be misguided, but I find that I gravitate toward low-level IO, like the interface that fs provides. The cool thing about fs (not the streams, but the posix functions), is that I can wrap them in whatever abstraction makes sense at the time. I can create my own stream classes around it, or I can make it callback-based or promise-based if I prefer. At the lowest level, it's pure simplicity:
read:
fill this buffer with this many bytes, please, and call this
function when yer done (and let me know how much you
wrote).
write:
write this many bytes from this buffer and let me know when
you're done with said buffer.
Kevin