Since this is asynchronous, don't we need to compare the latest raw value to make sure it's the same as the raw value we had when creating the when block?  Otherwise if I set the value twice in a row (like dynamic updating the HTML) this would be a race condition, right?