I'm not a fan of the `TrySomething` with out parameter pattern, so I would sooner do the following:

    while (true) {
        try {
            possiblyFailingOperation();
            break;
        }
        catch (Exception e) {
            reportError();
            if (abortRequested())
                throw;
        }
    }