code: def promise_factorial(n):
      if n < 2:
          return 1
      sleep(0.02)
      a = executor.submit(promise_factorial, n - 1)
  
      def promise_then(r):
          return mul(r, n)
  
      return Promise.resolve(a).then(promise_then)
  
imports: from time import sleep
  from concurrent.futures import ThreadPoolExecutor
  from promise import Promise
  from operator import mul
label_desc: Use image node_id 1 for calling a global function with example usage: promise_factorial(n) and returns: Promise, int, mul