'Encode and send this Command to the given protocol.
@param proto: an AMP, representing the connection to send to.
@return: a Deferred which will fire or error appropriately when the
other side responds to the command (or error if the connection is lost
before it is responded to).'

def _doCommand(self, proto):

    def _massageError(error):
        error.trap(RemoteAmpError)
        rje = error.value
        errorType = self.reverseErrors.get(rje.errorCode, UnknownRemoteError)
        return Failure(errorType(rje.description))
    d = proto._sendBoxCommand(self.commandName, self.makeArguments(self.structured, proto), self.requiresAnswer)
    if self.requiresAnswer:
        d.addCallback(self.parseResponse, proto)
        d.addErrback(_massageError)
    return d
