<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def async_lru(size=100):
 """ An LRU cache for asyncio coroutines in Python 3.5 .. @async_lru(1024) async def slow_coroutine(*args, **kwargs):
 return await some_other_slow_coroutine() .. """

    cache = collections.OrderedDict()

    def decorator(fn):
        @wraps(fn)
        @asyncio.coroutine
        def memoizer(*args, **kwargs):
            key = str((args, kwargs))
            try:
                result = cache.pop(key)
                cache[key] = result
            except KeyError:
                if len(cache) >= size:
                    cache.popitem(last=False)
                result = cache[key] = yield from fn(*args, **kwargs)
            return result
        return memoizer
    return decorator