An awaiter is the compiler-facing object that coordinates an awaitable operation: it determines completion and retrieves the result. The compiler-generated async method uses an awaiter rather than ContinueWith, within a state machine that tracks execution position. section 3.3
ContinueWith models only the callback-after-completion part. Await additionally supports the surrounding asynchronous control flow, allowing code such as sequential file reads to remain readable while returning control to the caller. section 3.3
Reading a bitmap width
GetBitmapWidth awaits two FileStream reads, validates the BMP header and read lengths, seeks to the width field, converts four bytes, and returns the result. The compiler divides this flow into resumable state-machine chunks. section 3.3
