Use Error objects in callback passed to "destroy" methods

The currently plain undefined objects are not useful at all, because the properties are undefined.
Using `Error` (and subclasses) at least gives us `message` and `name` to rely on.