Well, that sounds like a bug somewhere, not a limitation of filtered replication.
That warning occurs if the JSON parser hits a syntax error reading the received _changes feed. It almost always means that the socket got closed unexpectedly. And that in turn usually means an intermediate gateway decided the socket's been open too long. (Some telco gateways will do this, and apparently also AWS load balancers.) The 'heartbeat' option on the _changes request is supposed to prevent this by telling the server to periodically send a no-op CRLF so the socket doesn't look idle, though.
In any case, this isn't something that's related to filtering, so it's weird that it started happening after you added that. Do you have any more clues?
Again, there's nothing wrong with what you're doing. It just seems to have triggered some kind of bug, either in CBL or CouchDB. Let's try to diagnose that.
—Jens