connect/disconnect promise support