|  | @@ -241,21 +241,21 @@ class ResultHandler(_pool.ResultHandler):
 | 
	
		
			
				|  |  |          fileno_to_outq = self.fileno_to_outq
 | 
	
		
			
				|  |  |          on_state_change = self.on_state_change
 | 
	
		
			
				|  |  |          add_reader = hub.add_reader
 | 
	
		
			
				|  |  | -        hub_remove = hub.remove
 | 
	
		
			
				|  |  | +        remove_reader = hub.remove_reader
 | 
	
		
			
				|  |  |          recv_message = self._recv_message
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          def on_result_readable(fileno):
 | 
	
		
			
				|  |  |              try:
 | 
	
		
			
				|  |  |                  fileno_to_outq[fileno]
 | 
	
		
			
				|  |  |              except KeyError:  # process gone
 | 
	
		
			
				|  |  | -                return hub_remove(fileno)
 | 
	
		
			
				|  |  | +                return remove_reader(fileno)
 | 
	
		
			
				|  |  |              it = recv_message(add_reader, fileno, on_state_change)
 | 
	
		
			
				|  |  |              try:
 | 
	
		
			
				|  |  |                  next(it)
 | 
	
		
			
				|  |  |              except StopIteration:
 | 
	
		
			
				|  |  |                  pass
 | 
	
		
			
				|  |  |              except (IOError, OSError, EOFError):
 | 
	
		
			
				|  |  | -                hub_remove(fileno)
 | 
	
		
			
				|  |  | +                remove_reader(fileno)
 | 
	
		
			
				|  |  |              else:
 | 
	
		
			
				|  |  |                  add_reader(fileno, it)
 | 
	
		
			
				|  |  |          return on_result_readable
 | 
	
	
		
			
				|  | @@ -477,7 +477,7 @@ class AsynPool(_pool.Pool):
 | 
	
		
			
				|  |  |      def _create_process_handlers(self, hub, READ=READ, ERR=ERR):
 | 
	
		
			
				|  |  |          """For async pool this will create the handlers called
 | 
	
		
			
				|  |  |          when a process is up/down and etc."""
 | 
	
		
			
				|  |  | -        add_reader, hub_remove = hub.add_reader, hub.remove
 | 
	
		
			
				|  |  | +        add_reader, remove_reader, remove_writer = hub.add_reader, hub.remove_reader, hub.remove_writer
 | 
	
		
			
				|  |  |          cache = self._cache
 | 
	
		
			
				|  |  |          all_inqueues = self._all_inqueues
 | 
	
		
			
				|  |  |          fileno_to_inq = self._fileno_to_inq
 | 
	
	
		
			
				|  | @@ -528,7 +528,7 @@ class AsynPool(_pool.Pool):
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          self.on_process_up = on_process_up
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        def _remove_from_index(obj, proc, index, callback=None):
 | 
	
		
			
				|  |  | +        def _remove_from_index(obj, proc, index, remove_func, callback=None):
 | 
	
		
			
				|  |  |              # this remove the file descriptors for a process from
 | 
	
		
			
				|  |  |              # the indices.  we have to make sure we don't overwrite
 | 
	
		
			
				|  |  |              # another processes fds, as the fds may be reused.
 | 
	
	
		
			
				|  | @@ -544,7 +544,7 @@ class AsynPool(_pool.Pool):
 | 
	
		
			
				|  |  |              except KeyError:
 | 
	
		
			
				|  |  |                  pass
 | 
	
		
			
				|  |  |              else:
 | 
	
		
			
				|  |  | -                hub_remove(fd)
 | 
	
		
			
				|  |  | +                remove_func(fd)
 | 
	
		
			
				|  |  |                  if callback is not None:
 | 
	
		
			
				|  |  |                      callback(fd)
 | 
	
		
			
				|  |  |              return fd
 | 
	
	
		
			
				|  | @@ -554,23 +554,24 @@ class AsynPool(_pool.Pool):
 | 
	
		
			
				|  |  |              if proc.dead:
 | 
	
		
			
				|  |  |                  return
 | 
	
		
			
				|  |  |              process_flush_queues(proc)
 | 
	
		
			
				|  |  | -            _remove_from_index(proc.outq._reader, proc, fileno_to_outq)
 | 
	
		
			
				|  |  | +            _remove_from_index(proc.outq._reader, proc, fileno_to_outq, remove_func=remove_reader)
 | 
	
		
			
				|  |  |              if proc.synq:
 | 
	
		
			
				|  |  | -                _remove_from_index(proc.synq._writer, proc, fileno_to_synq)
 | 
	
		
			
				|  |  | +                _remove_from_index(proc.synq._writer, proc, fileno_to_synq, remove_func=remove_writer)
 | 
	
		
			
				|  |  |              inq = _remove_from_index(proc.inq._writer, proc, fileno_to_inq,
 | 
	
		
			
				|  |  | +                                     remove_func=remove_writer,
 | 
	
		
			
				|  |  |                                       callback=all_inqueues.discard)
 | 
	
		
			
				|  |  |              if inq:
 | 
	
		
			
				|  |  |                  busy_workers.discard(inq)
 | 
	
		
			
				|  |  | -            hub_remove(proc.sentinel)
 | 
	
		
			
				|  |  | +            remove_reader(proc.sentinel)
 | 
	
		
			
				|  |  |              waiting_to_start.discard(proc)
 | 
	
		
			
				|  |  |              self._active_writes.discard(proc.inqW_fd)
 | 
	
		
			
				|  |  | -            hub_remove(proc.inqW_fd)
 | 
	
		
			
				|  |  | -            hub_remove(proc.outqR_fd)
 | 
	
		
			
				|  |  | +            remove_writer(proc.inqW_fd)
 | 
	
		
			
				|  |  | +            remove_reader(proc.outqR_fd)
 | 
	
		
			
				|  |  |              if proc.synqR_fd:
 | 
	
		
			
				|  |  | -                hub_remove(proc.synqR_fd)
 | 
	
		
			
				|  |  | +                remove_reader(proc.synqR_fd)
 | 
	
		
			
				|  |  |              if proc.synqW_fd:
 | 
	
		
			
				|  |  |                  self._active_writes.discard(proc.synqW_fd)
 | 
	
		
			
				|  |  | -                hub_remove(proc.synqW_fd)
 | 
	
		
			
				|  |  | +                remove_reader(proc.synqW_fd)
 | 
	
		
			
				|  |  |          self.on_process_down = on_process_down
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def _create_write_handlers(self, hub,
 |