> You probably have to keep wrap_async in init because that doesn't get a callback, but otherwise use all callbacks.

Perhaps `.init'` should get a callback so that the interface is consistent and there isn't this one corner case that needs to be synchronous.  I feel like `init` functions may commonly have async calls in them (setting up connections, etc) so a callback seems appropriate there as well.