I think you would need to validate the response from the first call before determining it to be a success?
Success! Your widget expires in 30 seconds
Second call: use widget
Failure! For some reason or another
Ok, so restart the flow…
First call: fetch a widget
Cached! Receive the same widget again
Second call: use widget
Failure! widget has now expired