yes but if you have a visible bad sector - you have exhausted all spares. it's time to go back. or you have a catastrophic failure
That's not stricly true. A bad sector is visible if the host has requested data from a sector that is corrupt and unrecoverable using ECC. While it could mean that the drive has run out of spare sectors, and was unable to reallocate the sector - it could also mean, that due to chance the sector suffered a single episode of severe corruption that wasn't picked up during routine self-testing/self-repair.
If the drive during (either following a host request, or during routine scrubbing) detects that a sector is corrupt but recoverable, the drive will recruit a spare and transfer the data into the spare automatically, and silently.
If the drive detects that a sector is unrecoverable during a routine scrubbing operation, it can't reallocate it because it doesn't have the data it contained. What it does is it waits in hope that the host won't want it. If the host simply writes over the top of the dead sector, the drive will reallocate the new data, and simply cover-up the fact that it had lost the data. Of course, ideally, sophisticated ECC and background scrubbing should minimize the chance of this happening, by catching corruption before the data actually is lost.
The problem comes where the drive has lost the data, and the host wants it back. If, all of a sudden, a sector gets corrupted beyond recovery, and then the host requests the data in it, the drive can't do anything else except return 'bad sector'. This gives the OS an opportunity to recover.
E.g. the OS may be running a RAID driver. When a typical software RAID driver gets a 'bad sector' message, it will reconstruct the data from the parity drive, and then write the reconstructed data back to the same 'bad' sector. When the drive receives an 'overwrite' request for the 'bad' sector, it can reallocate it at that point.