title: How correctly use Redis with Koa (node.js)
body: <p>I try to get an information from a redis db and return it as the body of the response to the user. First, here is a code that fails :</p>
  
  <pre><code>var redis = require("redis"),
      koa = require("koa");
  
  var app = koa(),
      port = process.argv[2] || 3000,
      client = redis.createClient();
  
  app.use(function* (next) {
  
      client.get("test", function (err, res) {
          this.body = res;
      });
  
      yield next;
  });
  
  app.listen(port);
  console.log("listen on port " + port)
  </code></pre>
  
  <p>Surely because the yield calls end before the callback is called.</p>
  
  <p>Then here is a code that success :</p>
  
  <pre><code>function askRedit (callback) {
      client.get("test", callback);
  }
  
  app.use(function* (next) {
      this.body = yield askRedit;
      yield next;
  });
  </code></pre>
  
  <p>But I clearly misunderstand why the second one is working. Does the <code>yield</code> in <code>yield askRedit</code> have the same behavior than the one in <code>yield next</code> ?</p>
  
  <p><strong>EDIT :</strong> I just seen a page that seems to answers a little : <a href="https://github.com/visionmedia/co/blob/master/examples/redis.js">https://github.com/visionmedia/co/blob/master/examples/redis.js</a></p>
  
  <p>So now I will try to understand these misterious yield.. is this a way of doing synchronous things with asynchronous calls ?</p>