'If fail_on_error was set to False, a list of (success, response)
tuples will be returned.  If success is False, response will be
an Exception.  Otherwise, response will be the normal query response.
If fail_on_error was left as True and one of the requests
failed, the corresponding Exception will be raised. Otherwise,
the normal response will be returned.'

def deliver(self, timeout=None):

    self.event.wait(timeout)
    if self.error:
        raise self.error
    elif (not self.event.is_set()):
        raise OperationTimedOut()
    else:
        return self.responses
