Retry with timeout