A system, comprising: at least one processor coupled to a memory; and a compiler that receives source code comprising an asynchronous enumerable and an asynchronous enumeration; creates a class to execute the asynchronous enumeration when the compiler recognizes the asynchronous enumerable, the class representing the asynchronous enumerable and including operations needed to perform an enumeration of the asynchronous enumerable, the operations including suspending execution of an iteration at a suspension point to await completion of an asynchronous operation and resuming execution of the iteration at a resumption point upon completion of the asynchronous operation, when it recognizes the asynchronous enumeration, it produces a first set of instructions that allocate an asynchronous enumerable object based on the class at runtime for the asynchronous enumerable and a second set of instructions that enumerate the asynchronous enumerable utilizing the single asynchronous enumerable object, and outputs the asynchronous enumerable class and the first set of instructions as executable code. at least one processor coupled to a memory; and a compiler that receives source code comprising an asynchronous enumerable and an asynchronous enumeration; creates a class to execute the asynchronous enumeration when the compiler recognizes the asynchronous enumerable, the class representing the asynchronous enumerable and including operations needed to perform an enumeration of the asynchronous enumerable, the operations including suspending execution of an iteration at a suspension point to await completion of an asynchronous operation and resuming execution of the iteration at a resumption point upon completion of the asynchronous operation, when it recognizes the asynchronous enumeration, it produces a first set of instructions that allocate an asynchronous enumerable object based on the class at runtime for the asynchronous enumerable and a second set of instructions that enumerate the asynchronous enumerable utilizing the single asynchronous enumerable object, and outputs the asynchronous enumerable class and the first set of instructions as executable code. receives source code comprising an asynchronous enumerable and an asynchronous enumeration; creates a class to execute the asynchronous enumeration when the compiler recognizes the asynchronous enumerable, the class representing the asynchronous enumerable and including operations needed to perform an enumeration of the asynchronous enumerable, the operations including suspending execution of an iteration at a suspension point to await completion of an asynchronous operation and resuming execution of the iteration at a resumption point upon completion of the asynchronous operation, when it recognizes the asynchronous enumeration, it produces a first set of instructions that allocate an asynchronous enumerable object based on the class at runtime for the asynchronous enumerable and a second set of instructions that enumerate the asynchronous enumerable utilizing the single asynchronous enumerable object, and outputs the asynchronous enumerable class and the first set of instructions as executable code.