Just a style thing, but would it read more easily if the "exit case" were more explicit? I.e.
```
if (updatedInstance != null) {
  return updatedInstance;
}
instanceApi.delete(instance.getId());
InstancePredicates.awaitDeleted(instanceApi).apply(instance);
...
```