Previously createBetterAuth awaited a single memoized promise for the
auth context. If initFn rejected once (e.g. a plugin's init hitting a
transient DB error), that rejection was cached forever and every later
request, auth.api.* call, and auth.$context access failed for the
process lifetime.
Replace the single promise with a retryable getter: a failed attempt
clears the memoized promise so the next caller retries initFn, while a
successful context is still memoized and never re-created.