optimised the logic of returning resp
diff --git a/digest_auth_client.go b/digest_auth_client.go
index e3b4976..787a054 100644
--- a/digest_auth_client.go
+++ b/digest_auth_client.go
@@ -69,35 +69,33 @@
 // Execute initialise the request and get a response
 func (dr *DigestRequest) Execute() (resp *http.Response, err error) {
 
-	if dr.Auth == nil {
-		var req *http.Request
-		if req, err = http.NewRequest(dr.Method, dr.Uri, bytes.NewReader([]byte(dr.Body))); err != nil {
-			return nil, err
-		}
-
-		client := &http.Client{
-			Timeout: 30 * time.Second,
-		}
-		resp, err = client.Do(req)
-
-		if err != nil {
-			return nil, err
-		}
-		defer resp.Body.Close()
-
-		if resp.StatusCode == 401 {
-			return dr.executeNewDigest(resp)
-		}
-		return
+	if dr.Auth != nil {
+		return dr.executeExistingDigest()
 	}
 
-	return dr.executeExistingDigest()
+	var req *http.Request
+	if req, err = http.NewRequest(dr.Method, dr.Uri, bytes.NewReader([]byte(dr.Body))); err != nil {
+		return nil, err
+	}
+
+	client := &http.Client{
+		Timeout: 30 * time.Second,
+	}
+	if resp, err = client.Do(req); err != nil {
+		return nil, err
+	}
+	defer resp.Body.Close()
+
+	if resp.StatusCode == 401 {
+		return dr.executeNewDigest(resp)
+	}
+
+	return resp, nil
 }
 
-func (dr *DigestRequest) executeNewDigest(resp *http.Response) (*http.Response, error) {
+func (dr *DigestRequest) executeNewDigest(resp *http.Response) (resp2 *http.Response, err error) {
 	var (
 		auth     *authorization
-		err      error
 		wa       *wwwAuthenticate
 		waString string
 	)
@@ -111,45 +109,42 @@
 	if auth, err = newAuthorization(dr); err != nil {
 		return nil, err
 	}
-	authString := auth.toString()
 
-	if resp, err = dr.executeRequest(authString); err != nil {
+	if resp2, err = dr.executeRequest(auth.toString()); err != nil {
 		return nil, err
 	}
-	defer resp.Body.Close()
 
 	dr.Auth = auth
-	return resp, nil
+	return resp2, nil
 }
 
-func (dr *DigestRequest) executeExistingDigest() (*http.Response, error) {
-	var (
-		auth *authorization
-		err  error
-	)
+func (dr *DigestRequest) executeExistingDigest() (resp *http.Response, err error) {
+	var auth *authorization
 
 	if auth, err = dr.Auth.refreshAuthorization(dr); err != nil {
 		return nil, err
 	}
-
 	dr.Auth = auth
-	authString := dr.Auth.toString()
-	return dr.executeRequest(authString)
+
+	return dr.executeRequest(dr.Auth.toString())
 }
 
-func (dr *DigestRequest) executeRequest(authString string) (*http.Response, error) {
-	var (
-		err error
-		req *http.Request
-	)
+func (dr *DigestRequest) executeRequest(authString string) (resp *http.Response, err error) {
+	var req *http.Request
 
 	if req, err = http.NewRequest(dr.Method, dr.Uri, bytes.NewReader([]byte(dr.Body))); err != nil {
 		return nil, err
 	}
 
 	req.Header.Add("Authorization", authString)
+
 	client := &http.Client{
 		Timeout: 30 * time.Second,
 	}
-	return client.Do(req)
+	if resp, err = client.Do(req); err != nil {
+		return nil, err
+	}
+	defer resp.Body.Close()
+
+	return resp, nil
 }