we could pass an `end` generator to body calls, like:

```js
app.use(function*(){
  this.body = function*(end){
    var data = queue.next;
    var ret = yield first([data, end]));
    if (ret.caller == data) return ret.value;
    // do clean up work
  }
});
```