RxJS operator that wires an Observable's lifecycle to a ManualAsyncState.
On subscribe: sets loading (or refreshing if data was already loaded,
read via the sink's isFirstLoad; an explicit options.status wins).
On next: calls setSuccess(value).
On error: calls setError(err) and re-throws (does not swallow).
On teardown without a value (unsubscribe mid-flight, empty complete):
resets the sink to idle so a cancelled request never leaves it busy.
The Observable passes through unchanged - tapAsyncState is a side-effect operator.