Directly invoking the callback within this try block could lead to some unexpected behaviour, especially if the code we callback into throws it's own error. Maybe it should be wrapped in `process.nextTick`?