destructurable, async-friendly `try...catch` wrapper function with support for error side effects and fallback values