I am wondering if the list of interface options may already be too much.
For example:
body taking streams may be better suited as part of streams extension that is loaded as an optional dependency
gzip, cookie, proxy, and tunnel are something that should be loaded as a dependency.
I am not sure if I get the purpose of the options right. Maybe the spec does not intend that all option are actually available with each implementation. Rather if it is then the options work in the specified way.