 
     loadPreroll: (key, req, cb) ->
         count = @_counter++
+
+        cb = _u.once cb
 
         # short-circuit if we're missing any options
         console.debug "preroller opts is ", @options.preroll, key


        req.on "error", (err) =>
            console.debug "got a request error for ", count, err

        # attach a close listener to the response, to be fired if it gets
        # shut down and we should abort the request

            console.debug "got preroll response ", count
            if rres.statusCode == 200
                # collect preroll and return it so length can be computed

                # FIXME: If our preroll host was sending us a content-length
                # header, we could return that with the res stream, so that
                # we could stream the preroll straight through to the client

                buffers = []
                buf_len = 0

                rres.on "data", (chunk) =>
                    buffers.push chunk
                    buf_len += chunk.length

                # when preroll is done, call the output's callback
                rres.on "end", =>
                    conn.removeListener "close", conn_pre_abort
                    conn.removeListener "end", conn_pre_abort

                    pre_data = Buffer.concat buffers, buf_len

                    cb?(pre_data)
                    return true

