As reported in #313 and #384, an error thrown that isn't a
`HttpQueryError` will result in an "unhandled promise rejection",
leading to infinitely hanging requests.
While exploring ways to reproduce #313, I thought that validation errors
coming from GraphQL's internal type checking would reproduce the issue.
It didn't. But instead of throwing out the test I wrote, I thought it
might be good to keep it around to prevent future possible regressions.
I'll keep exploring ways to reproduce the issue I'm experiencing in a
subsequent commit(s).
This lets users distinguish multiple queries in a batch. It also
protects against users modifying the context in one query and
affecting another. (Although modifications to existing properties
of the context object will still be visible in other queries because
we only shallow copy.)