Catch rejected haptic triggers to prevent unhandled promise rejections
Haptic actions (tap, confirm, error, selection) are called fire-and-forget
from components. Centralizes trigger calls through a fire() helper that
wraps the promise chain with .catch(), preventing rejected haptics from
bubbling up as unhandled promise rejections. Also makes the exported
functions synchronous since callers never await them.
https://claude.ai/code/session_01Yc9rdNuACbQ4hLSm8Bs5Lo