Wrap callbacks in an eval to ensure that exceptions get propagated

Wrap callbacks in an eval to ensure that exceptions get propagated to the reject handler, rather than throwing a fatal exception.

Relates to #16