The underlying root cause was due to the producer trying to delete a non existent subscription queue. This causes a session error, which doesn't get picked up by the client while it's waiting for completion. Eventually the wait timesout.
The client appears to hang and then timesout.
The producers does not attempt to delete the subscription queue. However the underlying issue with regards to error handling is still there.
The client does not timeout anymore.