fix: capture exception in async land