Handle timeouts, this had a flow-on effect of hiding exceptions from the user.

This is a client API breaking change.

Closes #29.