(function(context,$) { "use strict"; context.JK = context.JK || {}; context.JK.FakeJamClientProxy = function(app, p2pMessageFactory) { const handler = { get: (target, prop, receiver) => { return function (...args) { return new Promise((resolve, reject) => { try { //console.log('[fakeJamClient]', prop) if(target[prop]){ const result = target[prop].apply(target, args); resolve(result); }else{ console.error('[fakeJamClient] error: No such method in FakeJamClient', prop); reject(`No such method in FakeJamClient: ${prop}`); } } catch (error) { console.error('[fakeJamClient] error:', prop, error); reject(error); } }); } } } const fakeJamClient = new JK.FakeJamClient(app, p2pMessageFactory); return new Proxy(fakeJamClient, handler); } })(window, jQuery);