Add callback argument to track completion of dump

No, you need to keep the Persistent around.  The raw pointer to the Function object is not stable and you leak the Persistent's storage cell this way, you need to .Dispose() it after the callback.