put callbacks behind a `try`; invoke in proper context
clarify docs