(sorry for the slow response: it took some before I found time to look
in to your report)
I have compared the code of run() to that of before the major rewrite of
3.00 and compared it to _imap_command(). The run() logic seems to be
exactly equivalent to that of pre-3.0... which means that in 7 years
no-one complained about mis-behavior. This usually indicates that you
use the method not as documented...
The usage of run() and _imap_command() is different. For run() you have
to provide your own tag. See manual-page.
More in general: what are you trying to run? Probably, you should
suggest to me to add some extra IMAP commands to the abstract interface.
If I where to design the interface of the Mail::IMAPClient module, I
would never have provided a "run()" method in the first place... Please
help other people by providing information about the required extension.