Fix link card preview failures and web download timeout
Propagate errors from getLinkMeta through resolveExternal so React Query
treats failed CardyB fetches as errors instead of caching empty data as
a successful result for 1 hour. This ensures automatic retries and shows
error messages instead of blank grey previews.
Fix AbortController in web downloadAndResize - signal was created but
never passed to fetch(), making the timeout a no-op.