If the forkIO thread running handleIncomingMessages terminates, nothing happens to the thread in runNodeController. Isn't this wrong? The node is now cut off from the outside world and there's no means to start handleIncomingMessages - or is there some magic in the Network.Transport layer that handles this? I can't see anything obvious.