URI: 
       tlnbase: lnbase_test must use threadsafe task submission - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit e7b92b8184f21dcf95e3f1f283b4bd55d0000d36
   DIR parent 9781201fa06d2c51b8bb9ed27af8ae5f2ec3537a
  HTML Author: Janus <ysangkok@gmail.com>
       Date:   Thu, 12 Apr 2018 16:57:42 +0200
       
       lnbase: lnbase_test must use threadsafe task submission
       
       Diffstat:
         M lib/lnbase.py                       |      27 +++++++++++++++++++--------
       
       1 file changed, 19 insertions(+), 8 deletions(-)
       ---
   DIR diff --git a/lib/lnbase.py b/lib/lnbase.py
       t@@ -4,6 +4,7 @@
          Derived from https://gist.github.com/AdamISZ/046d05c156aaeb56cc897f85eecb3eb8
        """
        
       +import queue
        import traceback
        import itertools
        import json
       t@@ -398,14 +399,24 @@ class LNWorker:
                self.peer.open_channel()
        
            def blocking_test_run(self):
       -        start = time.time()
       -        fut = asyncio.ensure_future(self._test())
       -        asyncio.get_event_loop().run_until_complete(fut)
       -        fut.exception()
       -        return "blocking test run took: " + str(time.time() - start)
       -
       -    async def _test(self):
       -        await self.peer.channel_establishment_flow(self.wallet)
       +        try:
       +            start = time.time()
       +            q = queue.Queue()
       +            fut = asyncio.run_coroutine_threadsafe(self._test(q), asyncio.get_event_loop())
       +            exp = q.get(timeout=5)
       +            if exp is not None: raise exp
       +            return "blocking test run took: " + str(time.time() - start)
       +        except:
       +            traceback.print_exc()
       +
       +    async def _test(self, q):
       +        try:
       +            await self.peer.channel_establishment_flow(self.wallet)
       +        except Exception as e:
       +            q.put(e)
       +        else:
       +            q.put(None)
       +