def Receive(self, replytype, chain=None, **kw):
chain = chain or self.chain<EOL>d = chain.flow.deferred<EOL>if self.trace:<EOL><INDENT>def trace(soapdata):<EOL><INDENT>print("<STR_LIT:_>" * <NUM_LIT>, time.ctime(time.time()), "<STR_LIT>", file=self.trace)<EOL>print(soapdata, file=self.trace)<EOL>return soapdata<EOL><DEDENT>d.addCallback(trace)<EOL><DEDENT>chain.processResponse(d, replytype, **kw)<EOL>if self.defer:<EOL><INDENT>return d<EOL><DEDENT>failure = []<EOL>append = failure.append<EOL>def errback(result):<EOL><INDENT>"""<STR_LIT>"""<EOL>append(result)<EOL>return None<EOL><DEDENT>d.addErrback(errback)<EOL>while not d.called:<EOL><INDENT>reactor.runUntilCurrent()<EOL>t2 = reactor.timeout()<EOL>t = reactor.running and t2<EOL>reactor.doIteration(t)<EOL><DEDENT>pyobj = d.result<EOL>if len(failure):<EOL><INDENT>failure[<NUM_LIT:0>].raiseException()<EOL><DEDENT>return pyobj<EOL>
This method allows code to act in a synchronous manner, it waits to 
        return until the deferred fires but it doesn't prevent other queued 
        calls from being executed.  Send must be called first, which sets up 
        the chain/factory.  

        WARNING: If defer is set to True, must either call Receive
        immediately after Send (ie. no intervening Sends) or pass
        chain in as a paramter.

        Parameters:
            replytype -- TypeCode
        KeyWord Parameters:
            chain -- processing chain, optional