if `err` is ever an Object, `toString()` will just print `"[object Object]"`
Are we sure that err will always produce something useful from toString?