async cancelAllFutureOrders() { let unfinishs = this.__unfinishFutureOrders; if (!_.values(unfinishs).length) return { success: true, message: 'no order to cancel' }; const reqs = ['pair', 'order_id', 'contract_type']; unfinishs = _.map(unfinishs, d => _.pick(d, reqs)); unfinishs = _.groupBy(unfinishs, 'pair'); unfinishs = _.mapValues(unfinishs, d => _.groupBy(d, 'contract_type')); let tasks = _.map(unfinishs, (info, pair) => { return _.map(info, (ds, contract_type) => { const o = { pair, contract_type, order_id: _.map(ds, d => d.order_id) }; return this.cancelFutureOrders(o); }); }); tasks = _.flatten(tasks); const ds = await Promise.all(tasks); const res = { success: [], error: [] }; _.forEach(ds, (d) => { res.success = { ...res.success, ...d.success }; res.error = { ...res.error, ...d.error }; }); return { success: _.keys(res.success), error: _.keys(res.error) }; }