Welcome to adobe AIR. The AIR platform is flash based and a proprietary 3rd party solution, meant for smaller projects and applications. Frankly League has far outgrown adobe AIR, and Riot now has the resources to design their own platform for the client that would be faster, more reliable, and easier to debug, due to being designed specifically for their game, but it isn't exactly that simple, because AIR has been a part of the League program since the start, and is somewhat "intertwined" with the game's code. There are many bugs that Riot has an extremely hard time finding, let alone fixing, because the base code for league hasn't really changed since the beginning, when League was a 4-man development project. As you can imagine the programming probably wasn't the most organized or standardized, through no fault of Riot, due to the fact that it was a very small team working on an very ambitious game, with minimal resources. Not only that, these days a lot changes in 5 years regarding computer technology.
See unlike other game franchises, Riot doesn't need to release a sequel to League due to the free-to-play multiplayer-only nature of League. However, this means they don't have an clear opportunity to rework the game code. Unlike other game developers who release a game, let the money pour in and take a couple months vacation, then get to work on creating a new game from scratch, Riot is constantly working on new updates that add significant new features to the game, so they never really get a solid chance to let the money flow in and get to work on an entirely new codebase, if they want that opportunity they have to plan ahead of time and allocate resources far in advance.
The game we play today is far different from the game that first released, yet has essentially the same codebase. This makes it extremely difficult to catch bugs and determine the root cause, because the game, for lack of a better word, was "poorly" written from the start, once again, not Riot's fault. They were making the best out of what they had on hand, and did a damn good job if you ask me. The game just exploded in popularity and Riot had to keep up with demand before they got a chance to rewrite the codebase, and from there on they have continued to add code to an aging client, and each line of code they add makes the eventual rewrite much more difficult. I am taking an introductory programming course at college in my pursuit of an engineering degree, I am not dealing with a programming language as complex as what is used in today's premium games, and even I can tell you that rewriting code from the ground up is an outright daunting proposition. I can't imagine how scary it would be to do it for a game as big as League, while also being continuously updated.
TL;DR: What Riot needs to do is to is rewrite the game code from the ground up. However, because of how sophisticated the game has become, and the fact that Riot has to constantly supply content updates to the game, they are instead fixing the game from the top down, which makes finding and fixing bugs much, much harder.