title: aiohttp: chain of decorators sequence
body: <p>Consider the following code:</p>
  
  <pre><code>from aiohttp_mako import template
  
  def authorize():
      def wrapper(func):
          @asyncio.coroutine
          @functools.wraps(func)
          def wrapped(*args):
              allowed = # Some auth stuff
              if not allowed:
                  return HTTPUnauthorized()
              return func()
          return wrapped
      return wrapper
  
  
  @authorize()
  @template('admin.mak')
  async def admin(request):
      return dict(ok=True)
  </code></pre>
  
  <p>I expect <code>authorize()</code>' <code>wrapper</code> to get <code>template</code> decorator as its <code>func</code> 
  so I can return the <code>Response</code> it generates in my <code>authorize</code> decorator. But <code>authorize()</code>' <code>wrapper</code> takes the <code>admin()</code> coroutine as the <code>func</code> and it ends up with</p>
  
  <pre><code>File "/Users/etemin/virtualenvs/onlinelux/lib/python3.5/site-packages/aiohttp/web.py", line 306, in _handle
      resp = yield from handler(request)
  File "/Users/etemin/virtualenvs/onlinelux/lib/python3.5/site-packages/aiohttp_session/__init__.py", line 134, in middleware
      raise RuntimeError("Expect response, not {!r}", type(response))
  RuntimeError: ('Expect response, not {!r}', &lt;class 'generator'&gt;)
  </code></pre>
  
  <p>Cause it tries to return the coroutine. How should I make it to return the <code>template</code> decorator?</p>