service - inability to bind to a port should be a fatal, not a panic
retryChan needs to be buffered otherwise we end up in deadlock