@saghul I'm not sure about the best way to deal with this situation. This code is here to restore unused buffer area(eg `alloc_cb` returns `buf->len == 4096` but only 1 byte was used). I'm sure this works if libuv calls `read_cb` right after `alloc_buffer_cb`. But for `alloc_cb` -> `alloc_cb` -> `read_cb` -> `read_cb`  I would probably need a stack of pointers. What do you think?