Calls fetch with the session's token, and a JSON content type unless the
body is FormData. An expired token, or a 401, ends the session. An expired
token answers a 401 without calling the server.
(input: RequestInfo,init?: RequestInit) => Promise<Response>