Fix dependency on bytestring to use toStrict.
Fix typo in comments.
Improve readability.
Remove redundant parentheses.
Remove redundant do-notations.
Eta-reduction.
No need to check if boolean expression == True in guard.
Add Unknown to ReturnReplyCode to not crash when constructing a PublishError.
Include a bit more context with run-time errors.
Do not print a message for every broker connection that failed.
Do not just print an error message but actually throw a run-time error.

This allows users of the library to actually catch and handle exceptions.
Do not catch and print any exception but allow it to be handled by users of the library.
Track exceptions in the forked connection receiver to recognise unexpected connection closings.