Reuses a single listening connection thread.
Changed interface for plan: now returns a timeout: amount of time to wait before potentially shutting down connection.