The semantics of flush is a little unclear to me, i.e. when I call flush(cb) I'd expect that all data that I have write(chunk) would be flushed when cb is invoked. However, unlike flushSync this is not the case. flush doesn't actually flush the buffer to the worker, it just waits for whatever already has been flushed to worker is done.