This is your commSend definition and implementation:
local function commSend(contents, distribution, target) CTL:SendAddonMessage("BULK", "gBankComm", contents, distribution, target) end
But you're calling it in the pasted code the following ways:
commSend("gBankComm", commString, "WHISPER", sender, lib:FinishComm(complete)) ... commSend("gBankComm", "REQUEST", "GUILD") ... commSend("gBankComm", commString, "GUILD")
I don't believe any of those will end up sending a message. Maybe you're intending to call CTL:SendAddonMessage instead?
Also, once you do get the figured out, I think what you're trying to do with the callback is not what you expect. That callback will get fired when the message is sent, not after it's been received and processed but whoever is supposed to receive it. The purpse of that callback is due to the fact that the message may not be sent immediately due to throttling. So the callback is CTL's way of letting you know that the message was finally sent.
Sending and receiving of messages is not instantaneous and the time it takes is never a known. There's not even a guarantee the player on the other end will receive the message (for example if they logoff, or have addons that block messages)