The callback is valid only during the call to the method.
The data is owned by the callee, which is responsible of freeing it.