If operation is running killCursors command while another is using the cursor, the killing operation will interrupt the operation using the cursor.
However, if the operation using the cursor is towards the end of a getMore (for example, serializing the batch to be sent, like it does here), it may not check for interrupts. This means that it will not delete the cursor when it completes, and that future {{getMore}}s will succeed.
To fix this, when a cursor is checked in (or unpinned) we should (under the cursor manager lock) check whether the operation was interrupted or not. If it was, we put the cursor into a special "killed" state so that the next attempt to check out the cursor results in an error (todo: discuss details more with Charlie. We could also just delete the cursor if this is super hard).
To test this we may have to add another failpoint in getMore at the end of the function, at which point there won't be any more checks for interrupts.