'Download file.
@param command: command to run
@param chainDeferred: L{Deferred} used to queue commands.
@return: L{Deferred} of command response'

def _download(self, command, chainDeferred=None):

    if (chainDeferred is None):
        chainDeferred = defer.succeed(None)
    chainDeferred.addCallback(self._makeDataConnection)
    def queueCommand(downloader):
        d1 = self.client.queueStringCommand(command)
        d2 = downloader.d
        return defer.gatherResults([d1, d2])
    chainDeferred.addCallback(queueCommand)
    def downloadDone(result):
        (ignored, downloader) = result
        return downloader.buffer
    return chainDeferred.addCallback(downloadDone)
