ScanForWalletTransactions() has the following comment about its return value:
0 * Returns null if scan was successful. Otherwise, if a complete rescan was not
1 * possible (due to pruning or corruption), returns pointer to the most recent
2 * block that could not be scanned.
This is not strictly true. If abortrescan is called, then ScanForWalletTransactions() will return nullptr, even though the scan wasn’t successful to the tip.
This in turn causes a minor bug in importmulti, where the call doesn’t return the correct error and warning about potentially not finding transactions if abortrescan was called.
I think the correct fix is for ScanForWalletTransactions() to inform the caller that the rescan was aborted.