A turn that ended without finish() left busy=true, so send() returned at line one for every subsequent click — no fetch, no error, and the original "starting…" still on screen. That is a hang which produces no request and so no server-side trace of any kind. It now says what happened, and the pending indicator carries an elapsed counter so stalled and merely slow look different.