code: func (cu *cursor) Next() (*cb.Block, cb.Status) {
  	// This only loops once, as signal reading indicates non-nil next
  	for {
  		next := cu.list.getNext()
  		if next != nil {
  			cu.list = next
  			return cu.list.block, cb.Status_SUCCESS
  		}
  		<-cu.list.signal
  	}
  }
docs: // Next blocks until there is a new block available, or returns an error if the
  // next block is no longer retrievable