diff --git a/client.go b/client.go
index bf4d370..ee78652 100644
--- a/client.go
+++ b/client.go
@@ -126,6 +126,9 @@ func (c *Client) Send(req *http.Request, v interface{}) error {
 // client.Token will be updated when changed
 func (c *Client) SendWithAuth(req *http.Request, v interface{}) error {
 	c.Lock()
+	// Note: Here we do not want to `defer c.Unlock()` because we need `c.Send(...)`
+	// to happen outside of the locked section.
+
 	if c.Token != nil {
 		if !c.tokenExpiresAt.IsZero() && c.tokenExpiresAt.Sub(time.Now()) < RequestNewTokenBeforeExpiresIn {
 			// c.Token will be updated in GetAccessToken call
@@ -138,6 +141,8 @@ func (c *Client) SendWithAuth(req *http.Request, v interface{}) error {
 		req.Header.Set("Authorization", "Bearer "+c.Token.Token)
 	}
 
+	// Unlock the client mutex before sending the request, this allows multiple requests
+	// to be in progress at the same time.
 	c.Unlock()
 	return c.Send(req, v)
 }