The reasoning, essentially, is that Requests assumes that if you're building `Request` and `PreparedRequest` objects yourself, you are doing _everything_ about preparing them yourself. The `Request` -> `PreparedRequest` flow is basically an advanced use case, when you need to work around or change something Requests does internally.

When considered in that light, passing a `Request` to `Session.send()` is likely to be a _mistake_: you have a flow through your code where the `Request` doesn't get prepared prior to sending. That was the purpose of this exception: rather than quietly succeed but potentially do something wrong, we assume that advanced users will just fix the exception.