(let [[a b] (iterate inc 1)] (serializable.fn/fn []))
Will try to consume the entire infinite seq even though nothing refers to it. This is because destructuring let will expand into a form that assigns the (iterate inc 1) sequence to a gensym. So it becomes part of &env and then serializable.fn tries to serialize it.
Obviously there is no way to completely avoid this, since infinite seq's are valid values. However in the example case, nothing even refers to it in the function itself.
I have a small assertion lib that also captures the env, and it handles this case correctly. It filters out any env entries that are not referred to in the asserted expression.
serializable.fn could do the same thing.
https://github.com/RedHatQE/test.assert/blob/master/src/test/assert.clj#L357-369