testSetFailFastAtRetryCount() {
    stubNetUtils();

    connect();
    assertEquals(1, numTimingEvents);

    sendMap('foo', 'bar');
    assertNull(channel.forwardChannelTimerId_);
    assertNotNull(getSingleForwardRequest());
    assertEquals(0, channel.forwardChannelRetryCount_);

    // Set fail fast.
    channel.setFailFast(true);
    // Request should still be alive.
    assertNull(channel.forwardChannelTimerId_);
    assertNotNull(getSingleForwardRequest());
    assertEquals(0, channel.forwardChannelRetryCount_);

    // Watchdog timeout. Now we should get an error.
    responseTimeout();
    assertNull(channel.forwardChannelTimerId_);
    assertNull(getSingleForwardRequest());
    assertEquals(0, channel.forwardChannelRetryCount_);

    // We get the error immediately before starting to ping google.com.
    assertTrue(gotError);
    // We get the error immediately before starting to ping google.com.
    // Simulate that timing out. We should not get another error in addition
    // to the initial failure.
    gotError = false;
    mockClock.tick(netUtils.NETWORK_TIMEOUT);
    assertFalse('Extra error after network ping timed out.', gotError);

    // Make sure no more retry timers are firing.
    mockClock.tick(ALL_DAY_MS);
    assertNull(channel.forwardChannelTimerId_);
    assertNull(getSingleForwardRequest());
    assertEquals(0, channel.forwardChannelRetryCount_);
    assertEquals(1, numTimingEvents);
  }
Makes sure that setting fail fast while not retrying doesn't cause a
     failure.
@suppress {visibility} Accessing private properties.