I did try to avoid possible issues: Initially, some objects used by libuv were created as a `ref` object and then casted to `ptr` (which you shouldn't do it, I know), but now `alloc` is always used so everything is correct. I have also replaced the memory management functions used by the library from malloc to Nim's allocators so the context of the pointers should be the same (Yes, I have tested the program with `-d:useMalloc`, the result is the same), and made sure ARC doesn't deallocate futures by using `GC_ref` ad `GC_unref`
Regarding the code inside the event loop: it's possible that exceptions might be messing with it, but even unhandled exceptions are not managed at all (the program doesn't quit), which shouldn't be a problem. If it matters, the variable containing the loop is a global one, and is automatically destroyed with the destroy hook
