The monitor (middleware) concept could be extended to clients.
c := restful.NewClient()
c.Monitor(pre0, post0).Monitor(nil, post1) // Similar function types as for the server.
// One could add data to ctx, if monitor needs that.
c.Get(ctx, ...)
// Internally Do() could just call pre and post, if not nil.
The monitor (middleware) concept could be extended to clients.