on errors, buff needs to be freed

lib_uv allocates the buffer and expects the callback function to free the buffer, even in the case of an error.