@Nonnull @Override
    public ProgressState call() {
        progTracker.reset();
        stateMachineStep();
        return progTracker.toProgressState();
    }
@Test
    public void when_notAbleToOffer_then_offeredLater() {
        // When
        init(singletonList(entry("k", "v")));
        mockSsWriter.ableToOffer = false;
        assertEquals(MADE_PROGRESS, sst.call());
        assertEquals(0, input.remainingItems().size());
        assertEquals(NO_PROGRESS, sst.call());
        assertNull(mockSsWriter.poll());

        // Then
        mockSsWriter.ableToOffer = true;
        assertEquals(MADE_PROGRESS, sst.call());
        assertEquals(entry(serialize("k"), serialize("v")), mockSsWriter.poll());
        assertNull(mockSsWriter.poll());
    }