'Issue three retrieve calls immediately without waiting for any to
succeed and make sure they all do succeed eventually.'

def test_concurrentRetrieves(self):

    (p, t) = setUp()
    messages = [p.retrieve(i).addCallback(self.assertEqual, [('First    line    of    %d.' % ((i + 1),)), ('Second    line    of    %d.' % ((i + 1),))]) for i in range(3)]
    for i in range(1, 4):
        self.assertEqual(t.value(), ('RETR    %d\r\n' % (i,)))
        t.clear()
        p.dataReceived('+OK    2    lines    on    the    way\r\n')
        p.dataReceived(('First    line    of    %d.\r\n' % (i,)))
        p.dataReceived(('Second    line    of    %d.\r\n' % (i,)))
        self.assertEqual(t.value(), '')
        p.dataReceived('.\r\n')
    return defer.DeferredList(messages, fireOnOneErrback=True)
