*It may affect outer javascript and framework(like vue, angular, react etc...). I strongly recommend you use it in unavoidable case.
function insertCallback(parent, funcname, callback, ...args) {
let oldFunc = parent[funcname] ? parent[funcname] : function (){}
parent[funcname] = function() {
oldFunc.apply(this, arguments)
return callback(...args)
}
}
sample is here