fix(data-channel): send on the current handle after waiting for headroom
ReliableDataChannel.send/replay and LossyDataChannel's wait policy resolved
the RTCDataChannel before awaiting the headroom lock and sent on that handle
afterwards. Replacing the handle (the Safari null-id path in
resumeConnection) only rejects waiters parked on the buffer, so a sender
still queued on the lock would pass the headroom check against the new
channel and then write to the abandoned one: the send either rejected with
InvalidStateError or, if the old channel stayed "open", was marked sent and
later trimmed by alignBufferedAmount against the new channel's buffer.
Callers now resolve the handle after the wait returns.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>