Improvements on BaseCluster

- ensure the first func execution on retry loop
- update func reference after retry