                     @log?.debug "Lost connection to #{@url}. Retrying in 5 seconds"
                     @connected = false
 
+                    # unpipe everything
+                    @icecast.removeAllListeners()
+
             @icecast.on "metadata", (data) =>
                 unless @_in_disconnect
                     meta = Icecast.parse(data)
-                    console.log "metadata is ", meta
 
                     if meta.StreamTitle
                         @StreamTitle = meta.StreamTitle

    #----------

    info: ->
        source:     @TYPE?() ? @TYPE
        connected:  @connected
        url:        @url
        streamKey: @streamKey
        uuid:       @uuid
        isFallback: @isFallback

    #----------

    connect: ->
        @log?.debug "connecting to #{@url}"

        # attach mp3 parser for rewind buffer
        @parser = @_new_parser()

        url_opts = url.parse @url
        url_opts.headers = "user-agent":"StreamMachine 0.1.0"

    # fallback: Should we set the isFallback flag? (default false)
    # logger:   Logger (optional)
    constructor: (@opts) ->
        super useHeartbeat:false

        @url = @opts.url

        @log?.debug "ProxyRoom source created for #{@url}"

        @isFallback     = @opts.fallback || false

        @connected      = false
        @framesPerSec   = null

        @last_ts        = null
        @connected_at   = null

        @_in_disconnect = false

        # connection drop handling
        # (FIXME: bouncing not yet implemented)
