The API is defined in terms of strings.
TypeScript enums' values are numbers and are not correct for
this API. Drop the enums and use the new string union type
instead, as it was designed for just this use case.
The json method when invoked, must return the result of running consume body with JSON. This implies that it must have the same return value as JSON.parse, which is any.
The current typing supports passing headers through the Headers class,
but the spec also supports passing headers as an object mapping header
names to header values. See the [Github example](https://github.com/github/fetch#post-json).