Accept http.Handler and return http.HandlerFunc

Signed-off-by: Tom Wilkie <tom.wilkie@gmail.com>
diff --git a/route/route.go b/route/route.go
index d0af6ed..bfb22b8 100644
--- a/route/route.go
+++ b/route/route.go
@@ -41,7 +41,7 @@
 type Router struct {
 	rtr    *httprouter.Router
 	prefix string
-	instrh func(handlerName string, handler http.Handler) http.Handler
+	instrh func(handlerName string, handler http.Handler) http.HandlerFunc
 }
 
 // New returns a new Router.
@@ -52,10 +52,10 @@
 }
 
 // WithInstrumentation returns a router with instrumentation support.
-func (r *Router) WithInstrumentation(instrh func(handlerName string, handler http.Handler) http.Handler) *Router {
+func (r *Router) WithInstrumentation(instrh func(handlerName string, handler http.Handler) http.HandlerFunc) *Router {
 	if r.instrh != nil {
 		newInstrh := instrh
-		instrh = func(handlerName string, handler http.Handler) http.Handler {
+		instrh = func(handlerName string, handler http.Handler) http.HandlerFunc {
 			return newInstrh(handlerName, r.instrh(handlerName, handler))
 		}
 	}
diff --git a/route/route_test.go b/route/route_test.go
index 7b61f22..a4d6d7b 100644
--- a/route/route_test.go
+++ b/route/route_test.go
@@ -120,9 +120,9 @@
 			router: New(),
 			want:   "",
 		}, {
-			router: New().WithInstrumentation(func(handlerName string, handler http.Handler) http.Handler {
+			router: New().WithInstrumentation(func(handlerName string, handler http.Handler) http.HandlerFunc {
 				got = handlerName
-				return handler
+				return handler.ServeHTTP
 			}),
 			want: "/foo",
 		},
@@ -154,19 +154,19 @@
 		}, {
 			router: New().
 				WithInstrumentation(
-					func(handlerName string, handler http.Handler) http.Handler {
+					func(handlerName string, handler http.Handler) http.HandlerFunc {
 						got = append(got, "1"+handlerName)
-						return handler
+						return handler.ServeHTTP
 					}).
 				WithInstrumentation(
-					func(handlerName string, handler http.Handler) http.Handler {
+					func(handlerName string, handler http.Handler) http.HandlerFunc {
 						got = append(got, "2"+handlerName)
-						return handler
+						return handler.ServeHTTP
 					}).
 				WithInstrumentation(
-					func(handlerName string, handler http.Handler) http.Handler {
+					func(handlerName string, handler http.Handler) http.HandlerFunc {
 						got = append(got, "3"+handlerName)
-						return handler
+						return handler.ServeHTTP
 					}),
 			want: []string{"1/foo", "2/foo", "3/foo"},
 		},