girder/web_client/src/utilities/PluginUtils.js
function wrap(obj, funcName, wrapper) {
    obj.prototype[funcName] = _.wrap(obj.prototype[funcName], wrapper);
}
function wrap(obj, funcName, wrapper) {
    obj.prototype[funcName] = _.wrap(obj.prototype[funcName], wrapper);
}
Wrap the prototype method of a given object.

@param obj The object whose prototype to extend, e.g. MyView
@param funcName The name of the function to wrap, e.g. "render"
@param wrapper The wrapper function, which should be a function taking the
underlying wrapped function as its first argument. The wrapped function
should be called with .call(this[, arguments]) inside of the wrapper in
order to preserve "this" semantics.