TIL printf buffers until it sees a newline character and hence saves all the non-newline terminated strings in the callbacks until the process is done at which point it barfs them to stdout. Printf now works in callbacks.
Callbacks now work with user data