code: function ({ throttle = 5000, live }) {
        var stream = PullPushAbort()
  
        var lastResolvedValues = {}
  
        var timer = null
        var queued = false
        var sync = false
  
        var update = () => {
          // clear queue
          clearTimeout(timer)
          queued = false
  
          // get latest replication state (merge together values)
          var resolvedValues = resolveValues(values, ssb.id)
  
          // push changes since last update
          stream.push(objectDiff(lastResolvedValues, resolvedValues))
  
          // update internal de-dupe list
          lastResolvedValues = resolvedValues
        }
  
        pull(
          view.stream({ live }),
          stream.aborter,
          pull.drain((msg) => {
            if (stream.ended) return
  
            if (!sync) {
              // we'll store the incoming values (they will be updated as the view updates so
              // do not need to be manually patched)
              sync = true
              update()
  
              // if not live, we can close stream
              if (!live) stream.end()
            } else if (msg) {
              if (!queued) {
                queued = true
                timer = setTimeout(update, throttle)
              }
            }
          }, (err) => {
            if (err) return stream.end(err)
          })
        )
  
        return stream
      }
docs: get the reduced follows list starting at yourId (who to replicate, block)