Would this work if you named your anonymous function? In addition, you can get a link to a button from a method call, so you do not need to use Ext.getCmp() .
Ext.getCmp('myBtn').on('click', function handleClick(button, event){ alert('Alert this message only in first click.'); button.removeListener('click', handleClick); })
source share