asyncHandler / bindAsyncButton — promise-aware double-submit safety as a primitive, so builders write a normal
async handler and get race-safety for free instead of hand-rolling btn.disabled = true; try {...} finally {...}
on every form (saastarter parity: "every async action auto-disables its trigger + shows pending"). Wraps a
handler so the element is disabled + aria-busy (+ an optional pending label) for the in-flight window and
restored on settle, with a re-entry guard. Framework-agnostic; works on any element-like with disabled/textContent.
asyncHandler / bindAsyncButton — promise-aware double-submit safety as a primitive, so builders write a normal async handler and get race-safety for free instead of hand-rolling
btn.disabled = true; try {...} finally {...}on every form (saastarter parity: "every async action auto-disables its trigger + shows pending"). Wraps a handler so the element is disabled + aria-busy (+ an optional pending label) for the in-flight window and restored on settle, with a re-entry guard. Framework-agnostic; works on any element-like with disabled/textContent.