Since the freedom handler for disconnections fires generically with a socketInfo argument, TCP.Server needs to determine which socket disconnected.

To keep promises chained in the same place, and also maintain a distinction between local closes and remote disconnections without callback soup, it seems the best approach was to fulfill the connection disconnect promise from outside :/

However, I have still revised the chaining here to actually reflect close vs disconnect