when registering a C++ closure, additional upvalues can be used
add a load_buffer overload that works without a callback
overload call without the callback