async readFull(p) {
        let bytesRead = 0;
        while(bytesRead < p.length)try {
            const rr = await this.read(p.subarray(bytesRead));
            if (rr === null) {
                if (bytesRead === 0) return null;
                else throw new PartialReadError();
            }
            bytesRead += rr;
        } catch (err) {
            err.partial = p.subarray(0, bytesRead);
            throw err;
        }
        return p;
    }
/** reads exactly `p.length` bytes into `p`.
   *
   * If successful, `p` is returned.
   *
   * If the end of the underlying stream has been reached, and there are no more
   * bytes available in the buffer, `readFull()` returns `null` instead.
   *
   * An error is thrown if some bytes could be read, but not enough to fill `p`
   * entirely before the underlying stream reported an error or EOF. Any error
   * thrown will have a `partial` property that indicates the slice of the
   * buffer that has been successfully filled with data.
   *
   * Ported from https://golang.org/pkg/io/#ReadFull
   */
reads exactly `p.length` bytes into `p`.
If successful, `p` is returned.

If the end of the underlying stream has been reached, and there are no more
bytes available in the buffer, `readFull()` returns `null` instead.

An error is thrown if some bytes could be read, but not enough to fill `p`
entirely before the underlying stream reported an error or EOF. Any error
thrown will have a `partial` property that indicates the slice of the
buffer that has been successfully filled with data.


reads exactly ` p . length ` bytes into ` p ` . If successful ` p ` is returned . If the end of the underlying stream has been reached and there are no more bytes available in the buffer ` readFull () ` returns ` null ` instead . An error is thrown if some bytes could be read but not enough to fill ` p ` entirely before the underlying stream reported an error or EOF . Any error thrown will have a ` partial ` property that indicates the slice of the buffer that has been successfully filled with data .
async readFull(p) {
        let bytesRead = 0;
        while(bytesRead < p.length)try {
            const rr = await this.read(p.subarray(bytesRead));
            if (rr === null) {
                if (bytesRead === 0) return null;
                else throw new PartialReadError();
            }
            bytesRead += rr;
        } catch (err) {
            err.partial = p.subarray(0, bytesRead);
            throw err;
        }
        return p;
    }
async readFull ( p ) { let bytesRead = 0 ; while ( bytesRead < p . length ) try { const rr = await this . read ( p . subarray ( bytesRead ) ) ; if ( rr === null ) { if ( bytesRead === 0 ) return null ; else throw new PartialReadError ( ) ; } bytesRead += rr ; } catch ( err ) { err . partial = p . subarray ( 0 , bytesRead ) ; throw err ; } return p ; }
reads exactly `p.length` bytes into `p`.
reads exactly ` p . length ` bytes into ` p ` .