What's the intended use case for a Trippable? If it's on the return path, i.e. to receive trip information, I believe it can be approximated without an extra parameter:

```go
type Trippable struct {
    fail func(*http.Response) bool
    next http.RoundTripper
}

func (t Trippable) RoundTrip(req *http.Request) (*http.Response, error) {
    resp, err := t.next.RoundTrip(req)
    if err == ErrCircuitOpen {
        // Not allowed
    } else if t.fail(resp) {
        // Failure
    } else {
       // Success
    }
    return resp, err
}

t := Transport(fail, Trippable{fail, next})
```

Did you have something else in mind?