 So, 2018, it's almost starting, and it's an entire year. I didn't know that. And in a year, a lot of things can happen, and a lot of things will happen, and some things will be happening to the web. And so I think it's interesting to talk about the things that are going to be happening to the web in the year of 2018. And so I thought I'll try to explain to you one thing in two minutes. I'm going to talk about async iterators and generators. OK. Now, I'm aware of iterators. I'm aware of generators. Exactly. What you've done there is put the word async in front of them, and you'll try to pass it off as a new thing. I think we're done. Oh, excellent. Brilliant. So iterators are a type that you can use in for loops, for example, in for off loops, where you have an iterator, and you just get arrays that have an iterator, so you can iterate all the values. But you can create an iterator which is infinite as well. For example, then you have generators, which are the star functions with the yield keyword, where you can basically construct an iterator on the fly using a generator function. It's like a helper method to create an iterator. And now sometimes the problem was you wanted to not only yield values, but you wanted to yield promises. And you wanted to kind of know that only the next value is available once the previous promise is done resolving to something. Right. And that's where they came up with the concept of async iterators, which are the same thing, but instead of returning values, they iterate over promises. OK, so if I've fetched three things, I have a promise for each of those things, an async iterator, is that going to let me loop in? You would iterate over them in order, and you would not be able to do the second one until the first one had resolved and has been processed by you. Excellent. OK, so that's async iterators. What about async generators? I guess it's going to be the helper function. It's the helper function. But in this issue, you can yield promises. And it's going to be super helpful, exactly like you said, for fetches or in a service worker when you want to fetch your header, your main content, the footer. And you want these to be in order, because if your footer comes before the header or the content, that wouldn't make sense. So you kind of want to yield those bits and bobs in order and then just stitch them together or just forward them to the main thread so the page can build up. And I think it's going to be really, really useful once we have it in our JavaScript environment and just be able to work with asynchronous values. Like streams. Oh. Yes. Brilliant. Sold. The fetch observer. The fetch observer. Doesn't have to do with actual fetch. Yes, it does. Doesn't observe fetches. Yes, it does. How? Badic.