I'd rather pass send and sender into doSend, and let doSend manage the pendingSend