does a single retry if there is an error, which seems common in this implementation