The LinkSubscribe cleanup path is documented as bounded, but the timeout case only logged a warning and kept waiting for the update channel to close. If the subscription goroutine does not terminate, the deferred cleanup can still block forever after the warning.
Return from the drain loop after logging the timeout so waitForIfUpped can finish its bounded cleanup path.
Signed-off-by: Darafei Praliaskouski <me@komzpa.net>