                                 if ad.trackingEvents?
                                     for creative in wrappedAd.creatives
                                         for eventName in Object.keys ad.trackingEvents
-                                            creative.trackingEvents[eventName] or= []
-                                            creative.trackingEvents[eventName] = creative.trackingEvents[eventName].concat ad.trackingEvents[eventName]
-                                            
+                                            if creative.trackingEvents?
+                                                creative.trackingEvents[eventName] or= []
+                                                creative.trackingEvents[eventName] = creative.trackingEvents[eventName].concat ad.trackingEvents[eventName]
+
                                 if ad.sequence? and ad.sequence > 0
                                     wrappedAd.sequence = ad.sequence
 

                        baseURL = url.slice(0, url.lastIndexOf('/'))
                        ad.nextWrapperURL = "#{baseURL}/#{ad.nextWrapperURL}"

                    @_parse ad.nextWrapperURL, headers, timeout, parentURLs, (err, wrappedResponse) =>
                        if err?
                            # Timeout of VAST URI provided in Wrapper element, or of VAST URI provided in a subsequent Wrapper element.
                            # (URI was either unavailable or reached a timeout as defined by the video player.)

        parentURLs ?= []
        parentURLs.push url

        start = new Date().getTime()
        URLHandler.get url, headers, timeout, (err, xml) =>
            return cb(err) if err?
            took = new Date().getTime() - start
            logger.log("Vast download took " + took/1000 + " seconds, URL [" + url + "]")
            response = new VASTResponse()

            unless xml?.documentElement? and xml.documentElement.nodeName is "VAST"
