handle empty trades properly
no longer emit 'end' when cancelled by us
only stop polling if cancel succeeds