Persisting Flash RAM after a Refresh

In the handler event, "myEvent", I'm setting a private request
collection value with prc.myVar = flash.get("myVar","") and using that
to pre-populate my form input value with - value="#prc.myVar#"

Obviously on the initial request the field value is an empty string.

I'm then submitting the form to it's own action handler event,
"myEventAction", for validation.

I'm then using setNextEvent(event="myEvent",persist="myVar") to pass
back the form value after a failed validation and prc.myVar =
flash.get("myVar","") works just fine to pre-populate the original
field with the failed value.

My issue is that on a refresh the Flash RAM value of "myVar" is now an
[empty string].

I've used flash.keep("myVar") to persist the Flash RAM value and that
works fine but I'm now finding that the form is submitting the
original, invalid, value rather than the new value which the user has
overwritten in the form.

What have I missed?