diff --git a/openstack/client.go b/openstack/client.go
index 891726a..a5d0bc8 100644
--- a/openstack/client.go
+++ b/openstack/client.go
@@ -193,11 +193,11 @@
 func v3endpointLocator(v3Client *gophercloud.ServiceClient, opts gophercloud.EndpointOpts) (string, error) {
 	// Discover the service we're interested in.
 	var services = make([]services3.Service, 0, 1)
-	var err error
-	services3.List(v3Client, services3.ListOpts{ServiceType: opts.Type}).EachPage(func(page gophercloud.Page) bool {
+	servicePager := services3.List(v3Client, services3.ListOpts{ServiceType: opts.Type})
+	err := servicePager.EachPage(func(page gophercloud.Page) (bool, error) {
 		part, err := services3.ExtractServices(page)
 		if err != nil {
-			return false
+			return false, err
 		}
 
 		for _, service := range part {
@@ -206,7 +206,7 @@
 			}
 		}
 
-		return true
+		return true, nil
 	})
 	if err != nil {
 		return "", err
@@ -222,13 +222,14 @@
 
 	// Enumerate the endpoints available for this service.
 	var endpoints []endpoints3.Endpoint
-	endpoints3.List(v3Client, endpoints3.ListOpts{
+	endpointPager := endpoints3.List(v3Client, endpoints3.ListOpts{
 		Availability: opts.Availability,
 		ServiceID:    service.ID,
-	}).EachPage(func(page gophercloud.Page) bool {
+	})
+	err = endpointPager.EachPage(func(page gophercloud.Page) (bool, error) {
 		part, err := endpoints3.ExtractEndpoints(page)
 		if err != nil {
-			return false
+			return false, err
 		}
 
 		for _, endpoint := range part {
@@ -237,7 +238,7 @@
 			}
 		}
 
-		return true
+		return true, nil
 	})
 	if err != nil {
 		return "", err
diff --git a/openstack/identity/v3/endpoints/requests_test.go b/openstack/identity/v3/endpoints/requests_test.go
index 70dfd8e..f988770 100644
--- a/openstack/identity/v3/endpoints/requests_test.go
+++ b/openstack/identity/v3/endpoints/requests_test.go
@@ -128,12 +128,12 @@
 	client := serviceClient()
 
 	count := 0
-	List(client, ListOpts{}).EachPage(func(page gophercloud.Page) bool {
+	List(client, ListOpts{}).EachPage(func(page gophercloud.Page) (bool, error) {
 		count++
 		actual, err := ExtractEndpoints(page)
 		if err != nil {
 			t.Errorf("Failed to extract endpoints: %v", err)
-			return false
+			return false, err
 		}
 
 		expected := []Endpoint{
@@ -159,7 +159,7 @@
 			t.Errorf("Expected %#v, got %#v", expected, actual)
 		}
 
-		return true
+		return true, nil
 	})
 	if count != 1 {
 		t.Errorf("Expected 1 page, got %d", count)
diff --git a/openstack/identity/v3/services/requests_test.go b/openstack/identity/v3/services/requests_test.go
index 9fea519..59cefe3 100644
--- a/openstack/identity/v3/services/requests_test.go
+++ b/openstack/identity/v3/services/requests_test.go
@@ -99,12 +99,11 @@
 	client := serviceClient()
 
 	count := 0
-	List(client, ListOpts{}).EachPage(func(page gophercloud.Page) bool {
+	err := List(client, ListOpts{}).EachPage(func(page gophercloud.Page) (bool, error) {
 		count++
 		actual, err := ExtractServices(page)
 		if err != nil {
-			t.Errorf("Unexpected error extracting services: %v", err)
-			return false
+			return false, err
 		}
 
 		desc0 := "Service One"
@@ -128,8 +127,11 @@
 			t.Errorf("Expected %#v, got %#v", expected, actual)
 		}
 
-		return true
+		return true, nil
 	})
+	if err != nil {
+		t.Errorf("Unexpected error while paging: %v", err)
+	}
 	if count != 1 {
 		t.Errorf("Expected 1 page, got %d", count)
 	}
