docs: function cachedBacklinks (id, backlinksPullStream) {
      if (!cache[id]) {
        var sync = Value(false)
        var aborter = Abortable()
        var collection = Value([])
  
        // try not to saturate the thread
        onceIdle(() => {
          pull(
            backlinksPullStream,
            aborter,
            pull.drain((msg) => {
              if (msg.sync) {
                sync.set(true)
              } else {
                var value = resolve(collection)
                value.push(msg)
                collection.set(value)
              }
            })
          )
        })
  
        cache[id] = computed([collection], x => x, {
          onListen: () => use(id),
          onUnlisten: () => release(id)
        })
  
        cache[id].destroy = aborter.abort
        cache[id].sync = sync
      }
      return cache[id]
    }