I tried to assume as little as possible about how libuv calls the allocation/read routines, that's why I use an `apos` pointer, which is more of a reserved area. So if it's called twice it will only advance a 'reserved' pointer(`wpos` is what was actually written).