         if @size is 'flexible'
             if @enabled or @paused
                 @buffer = concat_(@buffer, buffer)
-                split.call(this) if @enabled and @splitters.length
+                @buffer = split.call(this, @buffer)
             else if not @paused
                 @emit('data', buffer)
             yes # it's safe to immediately write again

{ min, max } = Math


split = () ->
    return unless @buffer.length
    can_split = yes
    while can_split
        cur = null
        pos = buflen = @buffer.length
        for splitter in @splitters
            continue if buflen < splitter.length
            i = buffertools.indexOf.call(@buffer, splitter)
            if i isnt -1 and i < pos and i < buflen
                cur = splitter
                pos = i

        else if @size is 'none'
            if @paused
                @buffer = concat_(@buffer, buffer)
                @buffer = split.call(this, @buffer)
                no # because the sink is full
            else
                buffer = split.call(this, buffer)
                @emit('data', buffer)
                yes # the sink is'nt full yet

