I ran into this situation as well. What I did to fix it is to unpause the agent first before processing the pause. I added this to extensions_queuemetrics.conf to replace the old pause section. It will cause an unpause then pause when the agent presses the pause button.
exten => 22,1,Answer
exten => 22,2,NoOp( "QM: Pausing Agent/${AGENTCODE} with pause reason '${PAUSEREASON}' made by '${QM_LOGIN}' " )
exten => 22,3,UnpauseQueueMember(,Local/${AGENTCODE}@from-queue/n)
exten => 22,4,PauseQueueMember(,Local/${AGENTCODE}@from-queue/n)
exten => 22,5,System( echo "${EPOCH}|${UNIQUEID}|NONE|Agent/${AGENTCODE}|PAUSEREASON|${PAUSEREASON}" >> /var/log/asterisk/queue_log )
exten => 22,6,Hangup
This way the agent does not have to do any manual unpausing between pauses. Also I have never had a situation where the split second unpause triggered an improper call to be received during a break.
You may need to adjust slightly for your needs.
-Brendan