Refine error conditions and their usage.

Includes a few new tests over error delivery, including network-level failures.