ThreeDSFrameReason
type ThreeDSFrameReason = "message" | "load" | "timeout" | "abort";
Why the wait ended.
message— apostMessagematching ThreeDSCompletion arrived.load— the iframe finished the expected number of navigations. A timing signal only: it says "you may proceed", never whether the flow succeeded.timeout— nothing arrived beforetimeoutMs.abort— theAbortSignalyou passed was aborted.