Add more test cases.

1. Add a pipeline test (caught a bug)
2. Threading test
3. Encoding test.

For the pipeline test, the bug was mainly about needing
to read all the responses in the queue, before exploding.
Revert to not raising anymore.

Assertion is that at least in our case, we don't run into
those errors anyway, so we'll handle the error on the caller.
Don't retry.
Release.