_verifyPiece (index, cb) {
    if (this.destroyed) return cb(new Error('torrent is destroyed'))

    const getOpts = {}
    // Specify length for the last piece in case it is zero-padded
    if (index === this.pieces.length - 1) {
      getOpts.length = this.lastPieceLength
    }
    this.store.get(index, getOpts, async (err, buf) => {
      if (this.destroyed) return cb(new Error('torrent is destroyed'))

      if (err) return queueMicrotask(() => cb(null, false)) // ignore error

      const hex = await hash(buf, 'hex')
      if (this.destroyed) return cb(new Error('torrent is destroyed'))

      cb(null, hex === this._hashes[index])
    })
  }
Verify a single piece using hashing
@param index
@param {verifyPieceCallback} cb
@private