@lhoward - I wrote a bit of info on correctly checking objects yesterday in https://github.com/mozilla/browserid/pull/3941#discussion_r6823625.

Instead of `typeof claims !== 'object'`, you may want to use `Object.prototype.toString.apply(claims) === "[object Object]"`

As @6a68 said, strings, arrays, and null are all Objects, but only objects return "[object Object]" when converted using Object.prototype.toString.apply. You can experiment with this in browser's developer console.

```
> Object.prototype.toString.apply({a:"b"})
"[object Object]"
> Object.prototype.toString.apply(new Object({a:"b"}))
"[object Object]"
> Object.prototype.toString.apply("this is a string")
"[object String]"
> Object.prototype.toString.apply(null)
"[object Null]"
> Object.prototype.toString.apply([])
"[object Array]"
```