If you look in `cljr--thread-last` and `cljr--thread-first`, you'll see two instances of `(message "Nothing more to thread.")`. That looks like another guard - and if it is hit, this will go into an infinite loop.

Either it has to be changed to an error, and this can do `ignore-errors` outside of the `while`. Or it has to be added to the guard.