diff --git a/src/Renderer.js b/src/Renderer.js index 7cedf278537..c997658b30b 100644 --- a/src/Renderer.js +++ b/src/Renderer.js @@ -39,17 +39,22 @@ export function Renderer(options) { // use a function, not an arrow, in order to be able to pass "arguments" through this.render = function () { + const renderArgs = arguments + const runRender = () => { + if (this._render) { + this._render.apply(this, renderArgs) + } else { + utils.logWarn(`No render function was provided, please use .setRender on the renderer`); + } + } + if (!isRendererPreferredFromAdUnit(adUnitCode)) { // we expect to load a renderer url once only so cache the request to load script + this.cmd.unshift(runRender) // should render run first ? loadExternalScript(url, moduleCode, this.callback); } else { utils.logWarn(`External Js not loaded by Renderer since renderer url and callback is already defined on adUnit ${adUnitCode}`); - } - - if (this._render) { - this._render.apply(this, arguments) // _render is expected to use push as appropriate - } else { - utils.logWarn(`No render function was provided, please use .setRender on the renderer`); + runRender() } }.bind(this) // bind the function to this object to avoid 'this' errors }