def block(self, *args, **kwargs):
        """Call the wrapped function, and wait for the result in a blocking fashion

        Returns the result of the function call.

        :param args:
        :param kwargs:
        :return: result of function call
        """
        LOG.debug(
            '%s on %s (awaitable %s async %s provider %s)',
            'blocking',
            self._func,
            self._is_awaitable,
            self._is_asyncio_provider,
            self._concurrency_provider
        )

        if self._deferable:
            raise RuntimeError('Already activated this call by deferring it')
        with self._lock:
            if not hasattr(self, '_result'):
                try:
                    self._result = (
                        self._concurrency_provider.run_until_complete(self.defer(*args, **kwargs))
                        if self._is_asyncio_provider else self._func(*args, **kwargs)
                    )
                except queue.Empty:
                    raise CloudTimeoutError("No data received after %.1f seconds." % kwargs.get("timeout", 0))
            self._blocked = True
        return self._result
Call the wrapped function, and wait for the result in a blocking fashion

        Returns the result of the function call.

        :param args:
        :param kwargs:
        :return: result of function call