I've completely redone everything.

After I went to sleep last night, I realized that maintaining a TCP
connection pool probably wasn't a bright idea. Imagine what happens when
there are a few hundred remotes or so. Not good.

Anyway, the API and logic is much simpler. Much happier.