feat: support Promise