The `errors` module provides helpers for safely invoking user callbacks.
@function
Wraps a callback in a function that when invoked will catch and log any
exception thrown by the callback.
@param callback {function}
The callback to wrap.
@param [defaultResponse] {value}
This value will be returned by the wrapper if `callback` throws an exception.
If not given, `undefined` is used.
@param [logException] {function}
When `callback` throws an exception, it will be passed to this function. If
not given, the exception is logged using `console.exception()`.
@returns {function}
A function that will invoke `callback` when called. The return value of this
function is the return value of `callback` unless `callback` throws an
exception. In that case, `defaultResponse` is returned or `undefined` if
`defaultResponse` is not given.
@function
Replaces methods of an object with wrapped versions of those methods returned
by `catchAndLog()`.
@param object {object}
The object whose methods to replace.
@param props {string,array}
The names of the methods of `object` to replace, either a string for a single
method or an array of strings for multiple methods.
@param [defaultResponse] {value}
This value will be returned by any wrapper whose wrapped method throws an
exception. If not given, `undefined` is used.
@param [logException] {function}
See `catchAndLog()`.