code: def execDetails(self, reqId, contract, execution):
          
          if execution.orderId == UNSET_INTEGER:
              # bug in TWS: executions of manual orders have unset value
              execution.orderId = 0
          key = self.orderKey(
              execution.clientId, execution.orderId, execution.permId)
          trade = self.trades.get(key)
          if trade and contract.conId == trade.contract.conId:
              contract = trade.contract
          else:
              contract = Contract.create(**contract.dict())
          execId = execution.execId
          execution.time = util.parseIBDatetime(execution.time). \
              astimezone(datetime.timezone.utc)
          isLive = reqId not in self._futures
          time = self.lastTime if isLive else execution.time
          fill = Fill(contract, execution, CommissionReport(), time)
          if execId not in self.fills:
              # first time we see this execution so add it
              self.fills[execId] = fill
              if trade:
                  trade.fills.append(fill)
                  logEntry = TradeLogEntry(
                      self.lastTime,
                      trade.orderStatus.status,
                      f'Fill {execution.shares}@{execution.price}')
                  trade.log.append(logEntry)
                  if isLive:
                      self._logger.info(f'execDetails: {fill}')
                      self.ib.execDetailsEvent.emit(trade, fill)
                      trade.fillEvent(trade, fill)
          if not isLive:
              self._results[reqId].append(fill)
docs: This wrapper handles both live fills and responses to reqExecutions.