src/streams.ts:77 declares private readonly callerAddr: string; and :108 sets this.callerAddr = this._signerPublicKey() in the constructor.
- Never read. Every method uses
_getSenderAddress() / _resolveCallerAddress() or a local callerAddr. grep -n 'this.callerAddr' src/ shows only the write.
- Miscomputed.
_signerPublicKey() (:131-139) calls this.activeWallet.getPublicKey() synchronously and only keeps the result if (typeof pk === 'string'). WalletAdapter.getPublicKey() may return Promise<string> (the async branch in _resolveCallerAddress handles exactly that), in which case _signerPublicKey falls through to ZERO_ADDR.
Impact
Dead field carrying a wrong value. Harmless today only because nothing reads it — a latent trap for anyone who wires it in.
Suggested fix
Delete the field, or make it a lazily-resolved cache that shares _resolveCallerAddress's async path.
src/streams.ts:77declaresprivate readonly callerAddr: string;and:108setsthis.callerAddr = this._signerPublicKey()in the constructor._getSenderAddress()/_resolveCallerAddress()or a localcallerAddr.grep -n 'this.callerAddr' src/shows only the write._signerPublicKey()(:131-139) callsthis.activeWallet.getPublicKey()synchronously and only keeps the resultif (typeof pk === 'string').WalletAdapter.getPublicKey()may returnPromise<string>(the async branch in_resolveCallerAddresshandles exactly that), in which case_signerPublicKeyfalls through toZERO_ADDR.Impact
Dead field carrying a wrong value. Harmless today only because nothing reads it — a latent trap for anyone who wires it in.
Suggested fix
Delete the field, or make it a lazily-resolved cache that shares
_resolveCallerAddress's async path.