def join(self):
self.closed = True<EOL>while self.expect > <NUM_LIT:0>:<EOL><INDENT>val = self.wait_change.get()<EOL>self.expect -= <NUM_LIT:1><EOL>if val is not None:<EOL><INDENT>gevent.joinall(list(self.greenlets), timeout=<NUM_LIT:30>)<EOL>gevent.killall(list(self.greenlets), block=True, timeout=<NUM_LIT:30>)<EOL>raise val<EOL><DEDENT><DEDENT>
Wait for transfer to exit, raising errors as necessary.