conceptually to me seems weird that ConnectionStream is driving shutdown/exit/restart logic?