Fix previous commit. When timeout, order just sets isTimeout=true, then client disconnects the socket, order run .destroy(), then unfinished labor run .remove(orderId, isTimeout=true), then labor emit retire event. If unfinished labor run .destroy() when timeout, labor will removes itself from the order at once, then the report message brcomes incorrect because all timeout labor turning to unmatched.