And add `done` arg to data callback
I think we need to keep a reference to the ctypes voidp object that we pass as userdata alive