fix(ListenerManager): retry dispose after server is not open
fix(ListenerManager): retry dispose after server is not open

Previously when a server is restarted due to client code change, the method `ListenerManager.dispose` does not gaurantee the listner is closed due to the chance that it might be not open when it is closed. Thus the `HotServers` will create another server which will cause the EADDRINUSE error.
Now we will retry disposing listener manager 100ms after it is failed and will retry forever until it is closed.

sebastian-software/advanced-boilerplate,sebastian-software/edgestack