Cordova ( web3js, infura, ethereumjs-tx.js) でsendSignedTransaction

self.sendTransaction = function( account , toaddress , amountEth ) {
var deferred = $q.defer();
const amountWei = self.web3.utils.toWei( amountEth , 'ether');

var tx = {
    from  : account.address,
    to    : toaddress,
    value : amountWei,
};

self.web3.eth.estimateGas( tx ).then( ( gasLimit ) => {
    // Gasを前もって仮計算するけど、その瞬間なのでちょっと多めにする。
    tx.gasLimit = self.web3.utils.toHex( gasLimit + 10000 );
    return self.web3.eth.getGasPrice();
}).then( ( gasPrice ) => {
    // Gasを設定して、nonceを取得(Metamaskでこれが困ったことがあった..)
    tx.gasPrice = self.web3.utils.toHex( gasPrice );
    return self.web3.eth.getTransactionCount( account.address );
}).then( ( count ) => {
    // 今回は1トランザクションだけど、複数送信の場合は注意
    tx.nonce = count;

    const transaction = new ethereumjs.Tx( tx );
    var privatekey  = account.privateKey;
    // keystoreから復元したら秘密鍵に0xが付いてたけど0xあるとsignで失敗する
    var prefix  = "0x";
    if( privatekey.indexOf( prefix ) === 0 ){
        privatekey = privatekey.slice( prefix.length ) ;
    }
    transaction.sign( ethereumjs.Buffer.Buffer.from( privatekey , 'hex' ) );
    const transactionHex = '0x'+transaction.serialize().toString( 'hex' )
    self.web3.eth.sendSignedTransaction( transactionHex ).once('transactionHash', (hash) => {
            console.log('transaction Hash', 'https://ropsten.etherscan.io/tx/' + hash);
          }).once('receipt', ( receipt ) => {
            console.log('receipt' , receipt );
          })
          .on('confirmation' , (confirmationNumber, receipt) => {
            console.log('confirmation', confirmationNumber, receipt);
          })
          .on('error', console.error );
    });

confirmationをonceにしたから、confirmationずっと流れると思ったけど24で終了した?
解除ってどうやるんだろう、それかonだけにするしかないかな。