re object access: I don't know, it seems messy either way. The `NanWeakCallbackInit()` *looks* nicer in use but seems a little silly in what it's doing just to get at the object. `NanReviveWeak()` seems a bit too specific, what if you want to do other things to the `Persistent` object than `MakeWeak()`. But `NAN_WKCB_OBJECT_REF` has a certain smell about it too.

Between the lesser of two evils I'd probably go with `NAN_WKCB_OBJECT_REF` but I have no idea about a better name. The `WKCB` bit annoys me a little, I'd prefer verbosity. But, if you can't come up with anything better then just go with that and we can *fix* it later.

As an aside, I think that I'd be tempted to come up with a new abstraction to achieve what they are doing with `BufferReference`, like `NanCallback`. The theme is fairly simple:

 * make a `Persistent` reference to some object
 * be able to make it as "no longer needed", even from outside the V8 thread
 * react to the `WeakReferenceCallback` and keep it alive if we know we still need it

I'd probably even find a use for a nice abstraction of that. You could even just lift the `BufferReference` implementation and template it. Then we could avoid some of the WeakCallback internals here.