This whole family of types seems to be less about being a client and more about embodying a specific request, and then having enough code in place to make the request. Given that the naming isn't great.