'Return the combined results of all wrapped RPCs.
This mimics the UserRPC.get_results() method.  Multiple results
are combined using the following rules:
1. If there are no wrapped RPCs, an empty list is returned.
2. If exactly one RPC is wrapped, its result is returned.
3. If more than one RPC is wrapped, the result is always a list,
which is constructed from the wrapped results as follows:
a. A wrapped result equal to None is ignored;
b. A wrapped result that is a list (but not any other type of
sequence!) has its elements added to the result list.
c. Any other wrapped result is appended to the result list.
After all results are combined, if __extra_hook is set, it is
called with the combined results and its return value becomes the
final result.
NOTE: This first waits for all wrapped RPCs to finish, and then
checks all their success.  This makes debugging easier.'

def get_result(self):

    if (len(self.__rpcs) == 1):
        results = self.__rpcs[0].get_result()
    else:
        results = []
        for rpc in self.__rpcs:
            result = rpc.get_result()
            if isinstance(result, list):
                results.extend(result)
            elif (result is not None):
                results.append(result)
    if (self.__extra_hook is not None):
        results = self.__extra_hook(results)
    return results
