code: function getBlock (i,  cb) {
        if(i === last_index)
          return cb(null, last_buffer)
        if(DO_CACHE && blocks.get(i))
          return cb(null, blocks.get(i))
  
        var file_start = i*block
        //insert cache here...
  
        if(file_start == state.start)
          return cb(null, state.buffers[0])
  
        raf.read(file_start, Math.min(block, length-file_start), function (err, buffer) {
          if(err) return setTimeout(function () {
            getBlock(i, cb)
          }, 200)
          if(DO_CACHE) blocks.set(i, buffer)
          last_index = i; last_buffer = buffer;
          cb(err, buffer)
        })
      }
docs: new WeakMap()