When the approval expires, the ledger treats it as if it never existed (the DFINITY implementation actively prunes expired approvals from memory, for example). So the icrc2_transfer_from
method should return the InsufficientAllowance
error when the approval expires.
Also note that the GenericError
variant is reserved for future refinements of the standard, not for the implementors to return custom errors.