Ensure promise is only cancelled if all derived promises cancel