chain.go
func ChainHandlers(handlers ...func(http.Handler) http.Handler) (h http.Handler) {
	for i := len(handlers) - 1; i >= 0; i-- {
		h = handlers[i](h)
	}
	return
}
func ChainHandlers(handlers ...func(http.Handler) http.Handler) (h http.Handler) {
	for i := len(handlers) - 1; i >= 0; i-- {
		h = handlers[i](h)
	}
	return
}
// ChainHandlers executes each function from the arguments with handler
// from the next function to construct a chan fo callers.