docs: async def dataSources(loop=None, executor=None):
      """Returns a dictionary mapping available DSNs to their descriptions.
  
      :param loop: asyncio compatible event loop
      :param executor: instance of custom ThreadPoolExecutor, if not supplied
          default executor will be used
      :return dict: mapping of dsn to driver description
      """
      loop = loop or asyncio.get_event_loop()
      sources = await loop.run_in_executor(executor, _dataSources)
      return sources