I see the problem. I broke out a branch on my repo, called TcpServerListen, which just abstracts the listen portion of the acceptor. Basically, the Acceptor is the "Server", so you should only create it once (sorry I didn't look at it closely enough when I replied to you).
In essence, the change allows you to call accept, which will create the acceptor. Then listen is called from within accept, to accept the first connection. Then after it gets a connection, it calls your connection-accepted handler, if there are no errors. After it gives you the session, it calls listen again, which creates the new session, by-passing the acceptor creation, and asynchronously accepts another connection. Rinse-Repeat.
Try that and let me know if it worked. I also updated it so that you can "cancel" the acceptor from within your connection function, in the case that you want to only accept n-connections. Just call cancel. Note: if you cancel the Acceptor/"Server", you may get an "operation_aborted" error, which is likely directly related to the cancel/close operation of the acceptor. Something to keep in mind.