any kind of primitive/object type can be thrown (uncommon, definitively an edge case, but still).

but only Error instances need to be treated specially, since other stuff can usually be json-ified.

also, that code sample still (surprisingly?) results in an instance of Error, which again doesn't json-ify well..