Defer child exit error

Allows pending messages to be processed. Additionally allows client to
cleanup to perform their own error handling via the destroy method.