Use an explicitly released event queue around the real result handler. Start attempt A, hold its completion, start B, then deliver A and its duplicate before B. Assert B is still unfinished at both points. If timeout behaviour matters, advance an injectable test clock deliberately instead of hoping a sleep creates the order you meant.
Keep that reproducer unchanged while checking the repair. Add missing correlation and restart with reused-looking identifiers as separate cases, so the new matching rule fails visibly rather than guessing. These are software bookkeeping tests; they do not authorise repeating the physical inspection.