While anyhow is convenient for emitting human-readable errors, its errors are generally unsuitable for catching. We work around this by nesting Option with Result in receive_raw and receive_message, but this quickly becomes unergonomic and returning a custom error as we do in lighthouse-client might be a better idea.