If we follow the logic of TCP etc, a close call on a session should not block, and should instead close in the background (for instance with asyncSpawn)
It would also make sense to add a timeout to the close operation, since a non-responsive peer could block indefinitely