# accumulate_distribute/events/orders_order_cancel.js

    'use strict'

    /**
     * Triggered on atomic order cancellation; clears the tick timeout and cancels
     * any remaining orders, before triggering the `exec:stop` event & teardown
     *
     * @memberOf module:AccumulateDistribute
     * @listens AOHost~event:ordersOrderCancel
     *
     * @param {AOInstance} instance - AO instance state
     * @param {object} order - the order that was cancelled externally
     * @returns {Promise} p
     */
    const onOrdersOrderCancel = async (instance = {}, order) => {
      const { state = {}, h = {} } = instance
      const { args = {}, orders = {}, gid, timeout } = state
      const { emit, debug } = h
      const { cancelDelay } = args

      debug('detected atomic cancelation, stopping...')

      if (timeout) {
        clearTimeout(timeout)
      }

      await emit('exec:order:cancel:all', gid, orders, cancelDelay)
      return emit('exec:stop')
    }

    module.exports = onOrdersOrderCancel