Guess first I should ask, how much data will we allow to be returned? I mean, if I did like a `cat /dev/zero` that'd pretty much be useless. imho if it were like 10 MB then I'd just say to `malloc` the entire thing then `realloc` on the return. Like you said earlier, users aren't doing this for performance. If we'd allow a full Buffer to fill completely (i.e. 1 GB) then probably `malloc` like `N + sizeof(void*)` (where `N == kBufferSize` or the like) and make it a linked list then do a `memcpy` when the process is complete.