'Retrieves a file or listing generated by the given command,
feeding it to the given protocol.
@param commands: list of strings of FTP commands to execute then receive
the results of (e.g. C{LIST}, C{RETR})
@param protocol: A L{Protocol} B{instance} e.g. an
L{FTPFileListProtocol}, or something that can be adapted to one.
Typically this will be an L{IConsumer} implementation.
@return: L{Deferred}.'

def receiveFromConnection(self, commands, protocol):

    protocol = interfaces.IProtocol(protocol)
    wrapper = ProtocolWrapper(protocol, defer.Deferred())
    return self._openDataConnection(commands, wrapper)
