Uh oh, this scares me and I'm not totally sure this is right. Putting a gc on a value type seems wrong. the callback should be attached to the `ctx` and that can deref the context if need be.