Software & Systems Engineering·Designing For Failure·ChallengeThe retry that charged twiceA payment request times out. The client does not know whether it succeeded.What makes retrying safe?AA client-generated key the server records, so a repeat returns the first resultBChecking first whether a matching payment already exists before retryingCRetrying only on a connection error, not a timeoutDUsing PUT instead of POSTCheck answer