I was thinking something more like:

```
type ResponseValidator func(*http.Response) bool
type Tripper interface {
  Success(time.Duration)
  Failure(time.Duration)
  Allow() bool
}
func Transport(ResponseValidator, Tripper, RoundTripper) (*http.Response, error)
```

The `Tripper` interface can be satisfied by the Circuit struct, or could be replaced in the caller's tests with a mock.  This means that different Circuit strategies can be constructed and injected to the Transport (and eventually the Handler).