Allow initial value to be a promise