Input buildinfo: https://buildinfos.debian.net/buildinfo-pool/n/node-lie/node-lie_3.3.0+dfsg-2_all.buildinfo Use metasnap for getting required timestamps New buildinfo file: /tmp/node-lie-3.3.0+dfsg-2hj3et8ne/node-lie_3.3.0+dfsg-2_all.buildinfo Get source package info: node-lie=3.3.0+dfsg-2 Source URL: http://snapshot.notset.fr/mr/package/node-lie/3.3.0+dfsg-2/srcfiles?fileinfo=1 env -i PATH=/usr/sbin:/usr/bin:/sbin:/bin TMPDIR=/tmp mmdebstrap --arch=amd64 --include=autoconf=2.69-14 automake=1:1.16.3-1 autopoint=0.21-3 autotools-dev=20180224.1+nmu1 base-files=11 base-passwd=3.5.48 bash=5.1-1 binutils=2.35.1-6 binutils-common=2.35.1-6 binutils-x86-64-linux-gnu=2.35.1-6 bsdextrautils=2.36.1-3 bsdutils=1:2.36.1-3 build-essential=12.8 bzip2=1.0.8-4 ca-certificates=20200601 coreutils=8.32-4+b1 cpp=4:10.2.0-1 cpp-10=10.2.1-1 dash=0.5.11+git20200708+dd9ef66-5 debconf=1.5.74 debhelper=13.3 debianutils=4.11.2 dh-autoreconf=19 dh-strip-nondeterminism=1.9.0-1 diffutils=1:3.7-3 dpkg=1.20.5 dpkg-dev=1.20.5 dwz=0.13+20201015-2 file=1:5.39-3 findutils=4.7.0+git20201010-2 g++=4:10.2.0-1 g++-10=10.2.1-1 gcc=4:10.2.0-1 gcc-10=10.2.1-1 gcc-10-base=10.2.1-1 gettext=0.21-3 gettext-base=0.21-3 grep=3.6-1 groff-base=1.22.4-5 gzip=1.10-2 hostname=3.23 init-system-helpers=1.60 intltool-debian=0.35.0+20060710.5 libacl1=2.2.53-8 libarchive-zip-perl=1.68-1 libarray-unique-perl=0.08-2 libasan6=10.2.1-1 libatomic1=10.2.1-1 libattr1=1:2.4.48-5 libaudit-common=1:3.0-1 libaudit1=1:3.0-1 libbinutils=2.35.1-6 libblkid1=2.36.1-3 libbrotli1=1.0.9-2+b2 libbz2-1.0=1.0.8-4 libc-ares2=1.17.1-1 libc-bin=2.31-6 libc-dev-bin=2.31-6 libc6=2.31-6 libc6-dev=2.31-6 libcap-ng0=0.7.9-2.2+b1 libcc1-0=10.2.1-1 libclass-accessor-perl=0.51-1 libcom-err2=1.45.6-1 libcrypt-dev=1:4.4.17-1 libcrypt1=1:4.4.17-1 libctf-nobfd0=2.35.1-6 libctf0=2.35.1-6 libdb5.3=5.3.28+dfsg1-0.6 libdebconfclient0=0.255 libdebhelper-perl=13.3 libdebian-copyright-perl=0.2-4 libdeflate0=1.6-1 libdpkg-perl=1.20.5 libelf1=0.182-1 libencode-locale-perl=1.05-1.1 liberror-perl=0.17029-1 libexporter-lite-perl=0.08-1 libffi7=3.3-5 libfile-listing-perl=6.14-1 libfile-stripnondeterminism-perl=1.9.0-1 libgcc-10-dev=10.2.1-1 libgcc-s1=10.2.1-1 libgcrypt20=1.8.7-2 libgdbm-compat4=1.18.1-5.1 libgdbm6=1.18.1-5.1 libgdk-pixbuf-2.0-0=2.42.2+dfsg-1 libgdk-pixbuf2.0-common=2.42.2+dfsg-1 libglib2.0-0=2.66.4-1 libgmp10=2:6.2.1+dfsg-1 libgomp1=10.2.1-1 libgpg-error0=1.38-2 libgssapi-krb5-2=1.18.3-4 libhtml-parser-perl=3.75-1+b1 libhtml-tagset-perl=3.20-4 libhtml-tree-perl=5.07-2 libhttp-cookies-perl=6.09-1 libhttp-date-perl=6.05-1 libhttp-message-perl=6.26-1 libhttp-negotiate-perl=6.01-1 libicu67=67.1-5 libio-html-perl=1.001-1.1 libio-pty-perl=1:1.15-2 libio-socket-ssl-perl=2.068-1 libio-stringy-perl=2.111-3 libipc-run-perl=20200505.0-1 libisl23=0.23-1 libitm1=10.2.1-1 libjbig0=2.1-3.1+b2 libjpeg62-turbo=1:2.0.5-1.1 libjs-inherits=2.0.4-1 libjs-sprintf-js=1.1.2+ds1-1 libjs-underscore=1.9.1~dfsg-1 libjs-util=0.10.3-3 libjson-perl=4.02000-2 libk5crypto3=1.18.3-4 libkeyutils1=1.6.1-2 libkrb5-3=1.18.3-4 libkrb5support0=1.18.3-4 liblsan0=10.2.1-1 liblwp-mediatypes-perl=6.04-1 liblwp-protocol-https-perl=6.10-1 liblz4-1=1.9.3-1 liblzma5=5.2.4-1+b1 libmagic-mgc=1:5.39-3 libmagic1=1:5.39-3 libmount1=2.36.1-3 libmpc3=1.2.0-1 libmpfr6=4.1.0-3 libnet-http-perl=6.19-1 libnet-ssleay-perl=1.88-3+b1 libnghttp2-14=1.42.0-1 libnode72=12.19.0~dfsg-1 libnotify-bin=0.7.9-2 libnotify4=0.7.9-2 libnsl-dev=1.3.0-2 libnsl2=1.3.0-2 libpam-modules=1.3.1-5 libpam-modules-bin=1.3.1-5 libpam-runtime=1.3.1-5 libpam0g=1.3.1-5 libparse-debcontrol-perl=2.005-4 libpcre2-8-0=10.36-2 libpcre3=2:8.39-13 libperl5.32=5.32.0-6 libpipeline1=1.5.3-1 libpng16-16=1.6.37-3 libquadmath0=10.2.1-1 libseccomp2=2.5.1-1 libselinux1=3.1-2+b2 libsigsegv2=2.12-3 libsmartcols1=2.36.1-3 libssl1.1=1.1.1i-1 libstdc++-10-dev=10.2.1-1 libstdc++6=10.2.1-1 libsub-name-perl=0.26-1+b1 libsub-override-perl=0.09-2 libsystemd0=247.2-2 libtie-ixhash-perl=1.23-2.1 libtiff5=4.2.0-1 libtimedate-perl=2.3300-1 libtinfo6=6.2+20201114-1 libtirpc-common=1.2.6-3 libtirpc-dev=1.2.6-3 libtirpc3=1.2.6-3 libtool=2.4.6-14 libtry-tiny-perl=0.30-1 libtsan0=10.2.1-1 libubsan1=10.2.1-1 libuchardet0=0.0.7-1 libudev1=247.2-2 libunistring2=0.9.10-4 liburi-perl=5.05-1 libuuid1=2.36.1-3 libwebp6=0.6.1-2+b1 libwww-perl=6.50-1 libwww-robotrules-perl=6.02-1 libxml2=2.9.10+dfsg-6.3+b1 libzstd1=1.4.5+dfsg-4 linux-libc-dev=5.9.15-1 login=1:4.8.1-1 lsb-base=11.1.0 m4=1.4.18-4 make=4.3-4 man-db=2.9.3-2 mawk=1.3.4.20200120-2 mocha=8.2.1+ds1+~cs29.4.27-3 ncurses-base=6.2+20201114-1 ncurses-bin=6.2+20201114-1 netbase=6.2 node-ansi-colors=4.1.1-2 node-ansi-regex=5.0.0-1 node-ansi-styles=4.2.1-1 node-anymatch=3.1.1+~2.2.2-1 node-argparse=2.0.1-1 node-array-from=2.1.1-2 node-async-each=1.0.3-1 node-balanced-match=1.0.0-1 node-binary-extensions=2.1.0-1 node-brace-expansion=2.0.0-1 node-braces=3.0.2+~3.0.0-1 node-browser-stdout=1.3.1-2 node-camelcase=6.2.0-2 node-chalk=4.1.0-1 node-chokidar=3.4.3-3 node-cliui=4.1.0-2 node-clone=2.1.2-2 node-color-convert=1.9.3-1 node-color-name=1.1.4+~1.1.1-1 node-d=1.0.1-1 node-debug=4.3.1+~cs4.1.5-1 node-decamelize=4.0.0-1 node-defaults=1.0.3-2 node-diff=4.0.2~dfsg-2 node-end-of-stream=1.4.4-1 node-es5-ext=0.10.53+~1.1.0-1 node-es6-iterator=2.0.3-2 node-es6-symbol=3.1.3+~cs3.5.0-1 node-escape-string-regexp=4.0.0-1 node-esprima=4.0.1+ds+~4.0.2-1 node-event-emitter=0.3.5-2 node-execa=4.1.0+dfsg+~cs19.3.6-4 node-fill-range=7.0.1-2 node-find-up=5.0.0-1 node-fs.realpath=1.0.0-1 node-function-bind=1.1.1+repack-1 node-get-caller-file=1.0.2-1 node-get-stream=6.0.0-1 node-glob=7.1.6+~7.1.3-1 node-glob-parent=5.1.1+~5.1.0-1 node-graceful-fs=4.2.4+repack-1 node-growl=1.10.5-2 node-has-flag=4.0.0-1 node-he=1.2.0-1 node-immediate=3.3.0+dfsg-1 node-inflight=1.0.6-1 node-inherits=2.0.4-1 node-invert-kv=3.0.1-1 node-is-binary-path=2.1.0-1 node-is-buffer=2.0.5-1 node-is-extglob=2.1.1-1 node-is-glob=4.0.1-1 node-is-number=7.0.0-1 node-is-object=1.0.2-1 node-is-plain-obj=3.0.0-1 node-is-stream=2.0.0-1 node-isexe=2.0.0-4 node-js-yaml=3.14.0+dfsg-2 node-kind-of=6.0.3+dfsg-1 node-lcid=3.1.1-1 node-locate-path=6.0.0-1 node-lodash-packages=4.17.20+dfsg+~cs8.31.170-1 node-mem=1.1.0-1 node-merge-descriptors=1.0.1-2 node-merge-stream=2.0.0+~1.1.2-1 node-mimic-fn=3.1.0-1 node-minimatch=3.0.4+~3.0.3-1 node-ms=2.1.3+~cs0.7.31-1 node-normalize-path=3.0.0-2 node-npm-run-path=2.0.2-2 node-object-assign=4.1.1-3 node-once=1.4.0-3 node-os-locale=5.0.0-1 node-p-limit=3.1.0+~cs2.3.0-1 node-p-locate=5.0.0-1 node-path-dirname=1.0.2-1 node-path-exists=4.0.0-2 node-path-is-absolute=2.0.0-1 node-path-to-regexp=6.2.0-1 node-pump=3.0.0-4 node-randombytes=2.1.0-1 node-readdirp=3.5.0-2 node-repeat-string=1.6.1-1 node-require-directory=2.1.1-1 node-require-main-filename=2.0.0-1 node-resolve=1.19.0+~cs5.20.8-2 node-safe-buffer=5.2.1+~cs2.1.2-1 node-serialize-javascript=5.0.1-2 node-set-blocking=2.0.0-1 node-set-immediate-shim=2.0.0-1 node-shebang-command=1.2.0-1 node-shebang-regex=3.0.0-1 node-signal-exit=3.0.3-1 node-sinon=9.2.2+ds+~cs56.20.22-1 node-sprintf-js=1.1.2+ds1-1 node-string-width=4.2.0-1 node-strip-ansi=6.0.0-2 node-strip-json-comments=3.1.1-1 node-supports-color=8.1.0+~7.2.0-1 node-to-regex-range=5.0.1-2 node-type-detect=4.0.8-1 node-underscore=1.9.1~dfsg-1 node-util=0.10.3-3 node-wcwidth.js=1.0.0-1 node-which=2.0.2-2 node-which-module=2.0.0-1 node-wide-align=1.1.3-1 node-wrap-ansi=4.0.0-2 node-wrappy=1.0.2-1 node-y18n=4.0.0-4 node-yargs=15.3.1+repack-2 node-yargs-parser=18.1.3+~15.0.0-1 nodejs=12.19.0~dfsg-1 openssl=1.1.1i-1 patch=2.7.6-6 perl=5.32.0-6 perl-base=5.32.0-6 perl-modules-5.32=5.32.0-6 perl-openssl-defaults=5 pkg-js-tools=0.9.58 po-debconf=1.0.21 sed=4.7-1 sensible-utils=0.0.12+nmu1 shared-mime-info=2.0-1 sysvinit-utils=2.96-5 tar=1.32+dfsg-1 util-linux=2.36.1-3 xz-utils=5.2.4-1+b1 zlib1g=1:1.2.11.dfsg-2 --variant=apt --aptopt=Acquire::Check-Valid-Until "false" --aptopt=Acquire::http::Dl-Limit "1000"; --aptopt=Acquire::https::Dl-Limit "1000"; --aptopt=Acquire::Retries "5"; --aptopt=APT::Get::allow-downgrades "true"; --keyring=/usr/share/keyrings/ --essential-hook=chroot "$1" sh -c "apt-get --yes install fakeroot util-linux" --essential-hook=copy-in /usr/share/keyrings/debian-archive-bullseye-automatic.gpg /usr/share/keyrings/debian-archive-bullseye-security-automatic.gpg /usr/share/keyrings/debian-archive-bullseye-stable.gpg /usr/share/keyrings/debian-archive-buster-automatic.gpg /usr/share/keyrings/debian-archive-buster-security-automatic.gpg /usr/share/keyrings/debian-archive-buster-stable.gpg /usr/share/keyrings/debian-archive-keyring.gpg /usr/share/keyrings/debian-archive-removed-keys.gpg /usr/share/keyrings/debian-archive-stretch-automatic.gpg /usr/share/keyrings/debian-archive-stretch-security-automatic.gpg /usr/share/keyrings/debian-archive-stretch-stable.gpg /usr/share/keyrings/debian-ports-archive-keyring-removed.gpg /usr/share/keyrings/debian-ports-archive-keyring.gpg /usr/share/keyrings/debian-keyring.gpg /etc/apt/trusted.gpg.d/ --essential-hook=chroot "$1" sh -c "rm /etc/apt/sources.list && echo 'deb http://snapshot.notset.fr/archive/debian/20210814T212851Z/ bookworm main deb-src http://snapshot.notset.fr/archive/debian/20210814T212851Z/ bookworm main deb http://snapshot.notset.fr/archive/debian/20210823T144440Z/ unstable main deb http://snapshot.notset.fr/archive/debian/20201224T143033Z/ unstable main' >> /etc/apt/sources.list && apt-get update" --customize-hook=chroot "$1" useradd --no-create-home -d /nonexistent -p "" builduser -s /bin/bash --customize-hook=chroot "$1" env sh -c "apt-get source --only-source -d node-lie=3.3.0+dfsg-2 && mkdir -p /build/node-lie-fEustz && dpkg-source --no-check -x /*.dsc /build/node-lie-fEustz/node-lie-3.3.0+dfsg && chown -R builduser:builduser /build/node-lie-fEustz" --customize-hook=chroot "$1" env --unset=TMPDIR runuser builduser -c "cd /build/node-lie-fEustz/node-lie-3.3.0+dfsg && env DEB_BUILD_OPTIONS="parallel=4" LANG="C.UTF-8" LC_ALL="C.UTF-8" SOURCE_DATE_EPOCH="1609053084" dpkg-buildpackage -uc -a amd64 --build=all" --customize-hook=sync-out /build/node-lie-fEustz /tmp/node-lie-3.3.0+dfsg-2hj3et8ne bullseye /dev/null deb http://snapshot.notset.fr/archive/debian/20201224T143033Z unstable main I: automatically chosen mode: root I: chroot architecture amd64 is equal to the host's architecture I: automatically chosen format: tar I: using /tmp/mmdebstrap.0Y5sxM9I_P as tempdir I: running apt-get update... I: downloading packages with apt... I: extracting archives... I: installing essential packages... I: running --essential-hook in shell: sh -c 'chroot "$1" sh -c "apt-get --yes install fakeroot util-linux"' exec /tmp/mmdebstrap.0Y5sxM9I_P Reading package lists... Building dependency tree... util-linux is already the newest version (2.36.1-3). The following NEW packages will be installed: fakeroot libfakeroot 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Need to get 134 kB of archives. After this operation, 397 kB of additional disk space will be used. Get:1 http://snapshot.notset.fr/archive/debian/20201224T143033Z unstable/main amd64 libfakeroot amd64 1.25.3-1.1 [47.0 kB] Get:2 http://snapshot.notset.fr/archive/debian/20201224T143033Z unstable/main amd64 fakeroot amd64 1.25.3-1.1 [87.0 kB] debconf: delaying package configuration, since apt-utils is not installed Fetched 134 kB in 0s (1092 kB/s) Selecting previously unselected package libfakeroot:amd64. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 4619 files and directories currently installed.) Preparing to unpack .../libfakeroot_1.25.3-1.1_amd64.deb ... Unpacking libfakeroot:amd64 (1.25.3-1.1) ... Selecting previously unselected package fakeroot. Preparing to unpack .../fakeroot_1.25.3-1.1_amd64.deb ... Unpacking fakeroot (1.25.3-1.1) ... Setting up libfakeroot:amd64 (1.25.3-1.1) ... Setting up fakeroot (1.25.3-1.1) ... update-alternatives: using /usr/bin/fakeroot-sysv to provide /usr/bin/fakeroot (fakeroot) in auto mode Processing triggers for libc-bin (2.31-6) ... I: running special hook: copy-in /usr/share/keyrings/debian-archive-bullseye-automatic.gpg /usr/share/keyrings/debian-archive-bullseye-security-automatic.gpg /usr/share/keyrings/debian-archive-bullseye-stable.gpg /usr/share/keyrings/debian-archive-buster-automatic.gpg /usr/share/keyrings/debian-archive-buster-security-automatic.gpg /usr/share/keyrings/debian-archive-buster-stable.gpg /usr/share/keyrings/debian-archive-keyring.gpg /usr/share/keyrings/debian-archive-removed-keys.gpg /usr/share/keyrings/debian-archive-stretch-automatic.gpg /usr/share/keyrings/debian-archive-stretch-security-automatic.gpg /usr/share/keyrings/debian-archive-stretch-stable.gpg /usr/share/keyrings/debian-ports-archive-keyring-removed.gpg /usr/share/keyrings/debian-ports-archive-keyring.gpg /usr/share/keyrings/debian-keyring.gpg /etc/apt/trusted.gpg.d/ I: running --essential-hook in shell: sh -c 'chroot "$1" sh -c "rm /etc/apt/sources.list && echo 'deb http://snapshot.notset.fr/archive/debian/20210814T212851Z/ bookworm main deb-src http://snapshot.notset.fr/archive/debian/20210814T212851Z/ bookworm main deb http://snapshot.notset.fr/archive/debian/20210823T144440Z/ unstable main deb http://snapshot.notset.fr/archive/debian/20201224T143033Z/ unstable main' >> /etc/apt/sources.list && apt-get update"' exec /tmp/mmdebstrap.0Y5sxM9I_P Get:1 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm InRelease [81.6 kB] Get:2 http://snapshot.notset.fr/archive/debian/20210823T144440Z unstable InRelease [165 kB] Hit:3 http://snapshot.notset.fr/archive/debian/20201224T143033Z unstable InRelease Ign:4 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main Sources Ign:5 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main amd64 Packages Ign:4 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main Sources Ign:5 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main amd64 Packages Ign:4 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main Sources Ign:5 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main amd64 Packages Get:4 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main Sources [11.4 MB] Get:5 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main amd64 Packages [11.1 MB] Ign:6 http://snapshot.notset.fr/archive/debian/20210823T144440Z unstable/main amd64 Packages Ign:6 http://snapshot.notset.fr/archive/debian/20210823T144440Z unstable/main amd64 Packages Ign:6 http://snapshot.notset.fr/archive/debian/20210823T144440Z unstable/main amd64 Packages Get:6 http://snapshot.notset.fr/archive/debian/20210823T144440Z unstable/main amd64 Packages [11.8 MB] Fetched 34.6 MB in 29s (1213 kB/s) Reading package lists... I: installing remaining packages inside the chroot... I: running --customize-hook in shell: sh -c 'chroot "$1" useradd --no-create-home -d /nonexistent -p "" builduser -s /bin/bash' exec /tmp/mmdebstrap.0Y5sxM9I_P I: running --customize-hook in shell: sh -c 'chroot "$1" env sh -c "apt-get source --only-source -d node-lie=3.3.0+dfsg-2 && mkdir -p /build/node-lie-fEustz && dpkg-source --no-check -x /*.dsc /build/node-lie-fEustz/node-lie-3.3.0+dfsg && chown -R builduser:builduser /build/node-lie-fEustz"' exec /tmp/mmdebstrap.0Y5sxM9I_P Reading package lists... NOTICE: 'node-lie' packaging is maintained in the 'Git' version control system at: https://salsa.debian.org/js-team/node-lie.git Please use: git clone https://salsa.debian.org/js-team/node-lie.git to retrieve the latest (possibly unreleased) updates to the package. Need to get 22.9 kB of source archives. Get:1 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main node-lie 3.3.0+dfsg-2 (dsc) [2103 B] Get:2 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main node-lie 3.3.0+dfsg-2 (tar) [8812 B] Get:3 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main node-lie 3.3.0+dfsg-2 (diff) [12.0 kB] Fetched 22.9 kB in 0s (285 kB/s) Download complete and in download only mode W: Download is performed unsandboxed as root as file 'node-lie_3.3.0+dfsg-2.dsc' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied) dpkg-source: info: extracting node-lie in /build/node-lie-fEustz/node-lie-3.3.0+dfsg dpkg-source: info: unpacking node-lie_3.3.0+dfsg.orig.tar.xz dpkg-source: info: unpacking node-lie_3.3.0+dfsg-2.debian.tar.xz dpkg-source: info: using patch list from debian/patches/series dpkg-source: info: applying fix-for-mocha-8.patch I: running --customize-hook in shell: sh -c 'chroot "$1" env --unset=TMPDIR runuser builduser -c "cd /build/node-lie-fEustz/node-lie-3.3.0+dfsg && env DEB_BUILD_OPTIONS="parallel=4" LANG="C.UTF-8" LC_ALL="C.UTF-8" SOURCE_DATE_EPOCH="1609053084" dpkg-buildpackage -uc -a amd64 --build=all"' exec /tmp/mmdebstrap.0Y5sxM9I_P dpkg-buildpackage: info: source package node-lie dpkg-buildpackage: info: source version 3.3.0+dfsg-2 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by Xavier Guimard dpkg-source --before-build . debian/rules clean dh clean dh_auto_clean --buildsystem=nodejs rm -rf ./node_modules/.cache dh_clean debian/rules binary-indep dh binary-indep dh_update_autotools_config -i dh_autoreconf -i dh_auto_configure --buildsystem=nodejs -i dh_auto_build --buildsystem=nodejs -i dh_auto_build: warning: Max loop command exceed, aborting dh_auto_test --buildsystem=nodejs -i mkdir -p node_modules ln -s ../debian/tests/test_modules/promises-aplus-tests node_modules/promises-aplus-tests ln -s ../. node_modules/lie /bin/sh -ex debian/tests/pkg-js/test + mocha test/cover.js Lie ✓ should work resolving a promise new ✓ should throw if you don't pass a function ✓ should have a working catch method resolve ✓ should work with true ✓ should work with false ✓ should work with null ✓ should work with undefined ✓ should work with 0 ✓ should work with 1 ✓ should work with '' ✓ should work with 'something' Promise.all ✓ fulfills if passed an empty array ✓ fulfills if passed an array of mixed fulfilled promises and values ✓ rejects if any passed promise is rejected ✓ resolves foreign thenables ✓ does not reject twice ✓ fulfills when passed an sparse array, giving `undefined` for the omitted values ✓ does not modify the input array ✓ should reject with a TypeError if given a non-iterable Promise.race ✓ fulfills if passed an empty array ✓ fulfills if passed an array of mixed fulfilled promises and values ✓ rejects if firsed resolved promise is rejected ✓ resolves if second resolved promise is rejected ✓ resolves foreign thenables ✓ fulfills when passed an sparse array, giving `undefined` for the omitted values ✓ should reject with a TypeError if given a non-iterable Promises/A+ Tests 2.1.2.1: When fulfilled, a promise: must not transition to any other state. ✓ already-fulfilled (101ms) ✓ immediately-fulfilled (101ms) ✓ eventually-fulfilled (101ms) ✓ trying to fulfill then immediately reject (100ms) ✓ trying to fulfill then reject, delayed (100ms) ✓ trying to fulfill immediately then reject delayed (100ms) 2.1.3.1: When rejected, a promise: must not transition to any other state. ✓ already-rejected (100ms) ✓ immediately-rejected (101ms) ✓ eventually-rejected (101ms) ✓ trying to reject then immediately fulfill (100ms) ✓ trying to reject then fulfill, delayed (100ms) ✓ trying to reject immediately then fulfill delayed (100ms) 2.2.1: Both `onFulfilled` and `onRejected` are optional arguments. 2.2.1.1: If `onFulfilled` is not a function, it must be ignored. applied to a directly-rejected promise ✓ `onFulfilled` is `undefined` ✓ `onFulfilled` is `null` ✓ `onFulfilled` is `false` ✓ `onFulfilled` is `5` ✓ `onFulfilled` is an object applied to a promise rejected and then chained off of ✓ `onFulfilled` is `undefined` ✓ `onFulfilled` is `null` ✓ `onFulfilled` is `false` ✓ `onFulfilled` is `5` ✓ `onFulfilled` is an object 2.2.1.2: If `onRejected` is not a function, it must be ignored. applied to a directly-fulfilled promise ✓ `onRejected` is `undefined` ✓ `onRejected` is `null` ✓ `onRejected` is `false` ✓ `onRejected` is `5` ✓ `onRejected` is an object applied to a promise fulfilled and then chained off of ✓ `onFulfilled` is `undefined` ✓ `onFulfilled` is `null` ✓ `onFulfilled` is `false` ✓ `onFulfilled` is `5` ✓ `onFulfilled` is an object 2.2.2: If `onFulfilled` is a function, 2.2.2.1: it must be called after `promise` is fulfilled, with `promise`’s fulfillment value as its first argument. ✓ already-fulfilled ✓ immediately-fulfilled ✓ eventually-fulfilled (51ms) 2.2.2.2: it must not be called before `promise` is fulfilled ✓ fulfilled after a delay (51ms) ✓ never fulfilled (151ms) 2.2.2.3: it must not be called more than once. ✓ already-fulfilled ✓ trying to fulfill a pending promise more than once, immediately ✓ trying to fulfill a pending promise more than once, delayed (51ms) ✓ trying to fulfill a pending promise more than once, immediately then delayed ✓ when multiple `then` calls are made, spaced apart in time (151ms) ✓ when `then` is interleaved with fulfillment 2.2.3: If `onRejected` is a function, 2.2.3.1: it must be called after `promise` is rejected, with `promise`’s rejection reason as its first argument. ✓ already-rejected ✓ immediately-rejected ✓ eventually-rejected (51ms) 2.2.3.2: it must not be called before `promise` is rejected ✓ rejected after a delay (51ms) ✓ never rejected (151ms) 2.2.3.3: it must not be called more than once. ✓ already-rejected ✓ trying to reject a pending promise more than once, immediately ✓ trying to reject a pending promise more than once, delayed (51ms) ✓ trying to reject a pending promise more than once, immediately then delayed ✓ when multiple `then` calls are made, spaced apart in time (152ms) ✓ when `then` is interleaved with rejection 2.2.4: `onFulfilled` or `onRejected` must not be called until the execution context stack contains only platform code. `then` returns before the promise becomes fulfilled or rejected ✓ already-fulfilled ✓ immediately-fulfilled ✓ eventually-fulfilled (50ms) ✓ already-rejected ✓ immediately-rejected ✓ eventually-rejected (50ms) Clean-stack execution ordering tests (fulfillment case) ✓ when `onFulfilled` is added immediately before the promise is fulfilled ✓ when `onFulfilled` is added immediately after the promise is fulfilled ✓ when one `onFulfilled` is added inside another `onFulfilled` ✓ when `onFulfilled` is added inside an `onRejected` ✓ when the promise is fulfilled asynchronously Clean-stack execution ordering tests (rejection case) ✓ when `onRejected` is added immediately before the promise is rejected ✓ when `onRejected` is added immediately after the promise is rejected ✓ when `onRejected` is added inside an `onFulfilled` ✓ when one `onRejected` is added inside another `onRejected` ✓ when the promise is rejected asynchronously 2.2.5 `onFulfilled` and `onRejected` must be called as functions (i.e. with no `this` value). sloppy mode ✓ fulfilled ✓ rejected 2.2.6: `then` may be called multiple times on the same promise. 2.2.6.1: If/when `promise` is fulfilled, all respective `onFulfilled` callbacks must execute in the order of their originating calls to `then`. multiple boring fulfillment handlers ✓ already-fulfilled ✓ immediately-fulfilled ✓ eventually-fulfilled (53ms) multiple fulfillment handlers, one of which throws ✓ already-fulfilled ✓ immediately-fulfilled ✓ eventually-fulfilled (53ms) results in multiple branching chains with their own fulfillment values ✓ already-fulfilled ✓ immediately-fulfilled ✓ eventually-fulfilled (51ms) `onFulfilled` handlers are called in the original order ✓ already-fulfilled ✓ immediately-fulfilled ✓ eventually-fulfilled (51ms) even when one handler is added inside another handler ✓ already-fulfilled ✓ immediately-fulfilled ✓ eventually-fulfilled (67ms) 2.2.6.2: If/when `promise` is rejected, all respective `onRejected` callbacks must execute in the order of their originating calls to `then`. multiple boring rejection handlers ✓ already-rejected ✓ immediately-rejected ✓ eventually-rejected (52ms) multiple rejection handlers, one of which throws ✓ already-rejected ✓ immediately-rejected ✓ eventually-rejected (52ms) results in multiple branching chains with their own fulfillment values ✓ already-rejected ✓ immediately-rejected ✓ eventually-rejected (49ms) `onRejected` handlers are called in the original order ✓ already-rejected ✓ immediately-rejected ✓ eventually-rejected (51ms) even when one handler is added inside another handler ✓ already-rejected ✓ immediately-rejected ✓ eventually-rejected (67ms) 2.2.7: `then` must return a promise: `promise2 = promise1.then(onFulfilled, onRejected)` ✓ is a promise 2.2.7.1: If either `onFulfilled` or `onRejected` returns a value `x`, run the Promise Resolution Procedure `[[Resolve]](promise2, x)` ✓ see separate 3.3 tests 2.2.7.2: If either `onFulfilled` or `onRejected` throws an exception `e`, `promise2` must be rejected with `e` as the reason. The reason is `undefined` ✓ already-fulfilled ✓ immediately-fulfilled ✓ eventually-fulfilled (49ms) ✓ already-rejected ✓ immediately-rejected ✓ eventually-rejected (50ms) The reason is `null` ✓ already-fulfilled ✓ immediately-fulfilled ✓ eventually-fulfilled (51ms) ✓ already-rejected ✓ immediately-rejected ✓ eventually-rejected (50ms) The reason is `false` ✓ already-fulfilled ✓ immediately-fulfilled ✓ eventually-fulfilled (50ms) ✓ already-rejected ✓ immediately-rejected ✓ eventually-rejected (49ms) The reason is `0` ✓ already-fulfilled ✓ immediately-fulfilled ✓ eventually-fulfilled (50ms) ✓ already-rejected ✓ immediately-rejected ✓ eventually-rejected (50ms) The reason is an error ✓ already-fulfilled ✓ immediately-fulfilled ✓ eventually-fulfilled (51ms) ✓ already-rejected ✓ immediately-rejected ✓ eventually-rejected (51ms) The reason is an error without a stack ✓ already-fulfilled ✓ immediately-fulfilled ✓ eventually-fulfilled (51ms) ✓ already-rejected ✓ immediately-rejected ✓ eventually-rejected (51ms) The reason is a date ✓ already-fulfilled ✓ immediately-fulfilled ✓ eventually-fulfilled (51ms) ✓ already-rejected ✓ immediately-rejected ✓ eventually-rejected (50ms) The reason is an object ✓ already-fulfilled ✓ immediately-fulfilled ✓ eventually-fulfilled (51ms) ✓ already-rejected ✓ immediately-rejected ✓ eventually-rejected (50ms) The reason is an always-pending thenable ✓ already-fulfilled ✓ immediately-fulfilled ✓ eventually-fulfilled (51ms) ✓ already-rejected ✓ immediately-rejected ✓ eventually-rejected (51ms) The reason is a fulfilled promise ✓ already-fulfilled ✓ immediately-fulfilled ✓ eventually-fulfilled (51ms) ✓ already-rejected ✓ immediately-rejected ✓ eventually-rejected (49ms) The reason is a rejected promise ✓ already-fulfilled ✓ immediately-fulfilled ✓ eventually-fulfilled (50ms) ✓ already-rejected ✓ immediately-rejected ✓ eventually-rejected (51ms) 2.2.7.3: If `onFulfilled` is not a function and `promise1` is fulfilled, `promise2` must be fulfilled with the same value. `onFulfilled` is `undefined` ✓ already-fulfilled ✓ immediately-fulfilled ✓ eventually-fulfilled (51ms) `onFulfilled` is `null` ✓ already-fulfilled ✓ immediately-fulfilled ✓ eventually-fulfilled (51ms) `onFulfilled` is `false` ✓ already-fulfilled ✓ immediately-fulfilled ✓ eventually-fulfilled (51ms) `onFulfilled` is `5` ✓ already-fulfilled ✓ immediately-fulfilled ✓ eventually-fulfilled (51ms) `onFulfilled` is an object ✓ already-fulfilled ✓ immediately-fulfilled ✓ eventually-fulfilled (51ms) `onFulfilled` is an array containing a function ✓ already-fulfilled ✓ immediately-fulfilled ✓ eventually-fulfilled (51ms) 2.2.7.4: If `onRejected` is not a function and `promise1` is rejected, `promise2` must be rejected with the same reason. `onRejected` is `undefined` ✓ already-rejected ✓ immediately-rejected ✓ eventually-rejected (50ms) `onRejected` is `null` ✓ already-rejected ✓ immediately-rejected ✓ eventually-rejected (49ms) `onRejected` is `false` ✓ already-rejected ✓ immediately-rejected ✓ eventually-rejected (49ms) `onRejected` is `5` ✓ already-rejected ✓ immediately-rejected ✓ eventually-rejected (50ms) `onRejected` is an object ✓ already-rejected ✓ immediately-rejected ✓ eventually-rejected (50ms) `onRejected` is an array containing a function ✓ already-rejected ✓ immediately-rejected ✓ eventually-rejected (50ms) 2.3.1: If `promise` and `x` refer to the same object, reject `promise` with a `TypeError' as the reason. ✓ via return from a fulfilled promise ✓ via return from a rejected promise 2.3.2: If `x` is a promise, adopt its state 2.3.2.1: If `x` is pending, `promise` must remain pending until `x` is fulfilled or rejected. ✓ via return from a fulfilled promise (101ms) ✓ via return from a rejected promise (99ms) 2.3.2.2: If/when `x` is fulfilled, fulfill `promise` with the same value. `x` is already-fulfilled ✓ via return from a fulfilled promise ✓ via return from a rejected promise `x` is eventually-fulfilled ✓ via return from a fulfilled promise (51ms) ✓ via return from a rejected promise (51ms) 2.3.2.3: If/when `x` is rejected, reject `promise` with the same reason. `x` is already-rejected ✓ via return from a fulfilled promise ✓ via return from a rejected promise `x` is eventually-rejected ✓ via return from a fulfilled promise (51ms) ✓ via return from a rejected promise (51ms) 2.3.3: Otherwise, if `x` is an object or function, 2.3.3.1: Let `then` be `x.then` `x` is an object with null prototype ✓ via return from a fulfilled promise ✓ via return from a rejected promise `x` is an object with normal Object.prototype ✓ via return from a fulfilled promise ✓ via return from a rejected promise `x` is a function ✓ via return from a fulfilled promise ✓ via return from a rejected promise 2.3.3.2: If retrieving the property `x.then` results in a thrown exception `e`, reject `promise` with `e` as the reason. `e` is `undefined` ✓ via return from a fulfilled promise ✓ via return from a rejected promise `e` is `null` ✓ via return from a fulfilled promise ✓ via return from a rejected promise `e` is `false` ✓ via return from a fulfilled promise ✓ via return from a rejected promise `e` is `0` ✓ via return from a fulfilled promise ✓ via return from a rejected promise `e` is an error ✓ via return from a fulfilled promise ✓ via return from a rejected promise `e` is an error without a stack ✓ via return from a fulfilled promise ✓ via return from a rejected promise `e` is a date ✓ via return from a fulfilled promise ✓ via return from a rejected promise `e` is an object ✓ via return from a fulfilled promise ✓ via return from a rejected promise `e` is an always-pending thenable ✓ via return from a fulfilled promise ✓ via return from a rejected promise `e` is a fulfilled promise ✓ via return from a fulfilled promise ✓ via return from a rejected promise `e` is a rejected promise ✓ via return from a fulfilled promise ✓ via return from a rejected promise 2.3.3.3: If `then` is a function, call it with `x` as `this`, first argument `resolvePromise`, and second argument `rejectPromise` Calls with `x` as `this` and two function arguments ✓ via return from a fulfilled promise ✓ via return from a rejected promise Uses the original value of `then` ✓ via return from a fulfilled promise ✓ via return from a rejected promise 2.3.3.3.1: If/when `resolvePromise` is called with value `y`, run `[[Resolve]](promise, y)` `y` is not a thenable `y` is `undefined` `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is `null` `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is `false` `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise (61ms) ✓ via return from a rejected promise `y` is `5` `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is an object `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is an array `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a thenable `y` is a synchronously-fulfilled custom thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is an asynchronously-fulfilled custom thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a synchronously-fulfilled one-time thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a thenable that tries to fulfill twice `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a thenable that fulfills but then throws `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is an already-fulfilled promise `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is an eventually-fulfilled promise `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise (51ms) ✓ via return from a rejected promise (50ms) `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise (52ms) ✓ via return from a rejected promise (52ms) `y` is a synchronously-rejected custom thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is an asynchronously-rejected custom thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a synchronously-rejected one-time thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a thenable that immediately throws in `then` `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is an object with a throwing `then` accessor `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is an already-rejected promise `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is an eventually-rejected promise `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise (51ms) ✓ via return from a rejected promise (51ms) `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise (52ms) ✓ via return from a rejected promise (52ms) `y` is a thenable for a thenable `y` is a synchronously-fulfilled custom thenable for a synchronously-fulfilled custom thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a synchronously-fulfilled custom thenable for an asynchronously-fulfilled custom thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a synchronously-fulfilled custom thenable for a synchronously-fulfilled one-time thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a synchronously-fulfilled custom thenable for a thenable that tries to fulfill twice `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a synchronously-fulfilled custom thenable for a thenable that fulfills but then throws `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a synchronously-fulfilled custom thenable for an already-fulfilled promise `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a synchronously-fulfilled custom thenable for an eventually-fulfilled promise `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise (51ms) ✓ via return from a rejected promise (51ms) `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise (52ms) ✓ via return from a rejected promise (52ms) `y` is a synchronously-fulfilled custom thenable for a synchronously-rejected custom thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a synchronously-fulfilled custom thenable for an asynchronously-rejected custom thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a synchronously-fulfilled custom thenable for a synchronously-rejected one-time thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a synchronously-fulfilled custom thenable for a thenable that immediately throws in `then` `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a synchronously-fulfilled custom thenable for an object with a throwing `then` accessor `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a synchronously-fulfilled custom thenable for an already-rejected promise `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a synchronously-fulfilled custom thenable for an eventually-rejected promise `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise (50ms) ✓ via return from a rejected promise (51ms) `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise (52ms) ✓ via return from a rejected promise (52ms) `y` is an asynchronously-fulfilled custom thenable for a synchronously-fulfilled custom thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is an asynchronously-fulfilled custom thenable for an asynchronously-fulfilled custom thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is an asynchronously-fulfilled custom thenable for a synchronously-fulfilled one-time thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is an asynchronously-fulfilled custom thenable for a thenable that tries to fulfill twice `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is an asynchronously-fulfilled custom thenable for a thenable that fulfills but then throws `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is an asynchronously-fulfilled custom thenable for an already-fulfilled promise `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is an asynchronously-fulfilled custom thenable for an eventually-fulfilled promise `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise (49ms) ✓ via return from a rejected promise (49ms) `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise (51ms) ✓ via return from a rejected promise (52ms) `y` is an asynchronously-fulfilled custom thenable for a synchronously-rejected custom thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is an asynchronously-fulfilled custom thenable for an asynchronously-rejected custom thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is an asynchronously-fulfilled custom thenable for a synchronously-rejected one-time thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is an asynchronously-fulfilled custom thenable for a thenable that immediately throws in `then` `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is an asynchronously-fulfilled custom thenable for an object with a throwing `then` accessor `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is an asynchronously-fulfilled custom thenable for an already-rejected promise `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is an asynchronously-fulfilled custom thenable for an eventually-rejected promise `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise (51ms) ✓ via return from a rejected promise (51ms) `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise (51ms) ✓ via return from a rejected promise (50ms) `y` is a synchronously-fulfilled one-time thenable for a synchronously-fulfilled custom thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a synchronously-fulfilled one-time thenable for an asynchronously-fulfilled custom thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a synchronously-fulfilled one-time thenable for a synchronously-fulfilled one-time thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a synchronously-fulfilled one-time thenable for a thenable that tries to fulfill twice `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a synchronously-fulfilled one-time thenable for a thenable that fulfills but then throws `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a synchronously-fulfilled one-time thenable for an already-fulfilled promise `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a synchronously-fulfilled one-time thenable for an eventually-fulfilled promise `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise (50ms) ✓ via return from a rejected promise (50ms) `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise (52ms) ✓ via return from a rejected promise (51ms) `y` is a synchronously-fulfilled one-time thenable for a synchronously-rejected custom thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a synchronously-fulfilled one-time thenable for an asynchronously-rejected custom thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a synchronously-fulfilled one-time thenable for a synchronously-rejected one-time thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a synchronously-fulfilled one-time thenable for a thenable that immediately throws in `then` `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a synchronously-fulfilled one-time thenable for an object with a throwing `then` accessor `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a synchronously-fulfilled one-time thenable for an already-rejected promise `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a synchronously-fulfilled one-time thenable for an eventually-rejected promise `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise (51ms) ✓ via return from a rejected promise (50ms) `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise (52ms) ✓ via return from a rejected promise (52ms) `y` is a thenable that tries to fulfill twice for a synchronously-fulfilled custom thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a thenable that tries to fulfill twice for an asynchronously-fulfilled custom thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a thenable that tries to fulfill twice for a synchronously-fulfilled one-time thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a thenable that tries to fulfill twice for a thenable that tries to fulfill twice `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a thenable that tries to fulfill twice for a thenable that fulfills but then throws `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a thenable that tries to fulfill twice for an already-fulfilled promise `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a thenable that tries to fulfill twice for an eventually-fulfilled promise `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise (50ms) ✓ via return from a rejected promise (51ms) `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise (51ms) ✓ via return from a rejected promise (51ms) `y` is a thenable that tries to fulfill twice for a synchronously-rejected custom thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a thenable that tries to fulfill twice for an asynchronously-rejected custom thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a thenable that tries to fulfill twice for a synchronously-rejected one-time thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a thenable that tries to fulfill twice for a thenable that immediately throws in `then` `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a thenable that tries to fulfill twice for an object with a throwing `then` accessor `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a thenable that tries to fulfill twice for an already-rejected promise `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a thenable that tries to fulfill twice for an eventually-rejected promise `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise (50ms) ✓ via return from a rejected promise (51ms) `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise (50ms) ✓ via return from a rejected promise (52ms) `y` is a thenable that fulfills but then throws for a synchronously-fulfilled custom thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a thenable that fulfills but then throws for an asynchronously-fulfilled custom thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a thenable that fulfills but then throws for a synchronously-fulfilled one-time thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a thenable that fulfills but then throws for a thenable that tries to fulfill twice `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a thenable that fulfills but then throws for a thenable that fulfills but then throws `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a thenable that fulfills but then throws for an already-fulfilled promise `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a thenable that fulfills but then throws for an eventually-fulfilled promise `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise (51ms) ✓ via return from a rejected promise (51ms) `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise (52ms) ✓ via return from a rejected promise (52ms) `y` is a thenable that fulfills but then throws for a synchronously-rejected custom thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a thenable that fulfills but then throws for an asynchronously-rejected custom thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a thenable that fulfills but then throws for a synchronously-rejected one-time thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a thenable that fulfills but then throws for a thenable that immediately throws in `then` `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a thenable that fulfills but then throws for an object with a throwing `then` accessor `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a thenable that fulfills but then throws for an already-rejected promise `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is a thenable that fulfills but then throws for an eventually-rejected promise `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise (51ms) ✓ via return from a rejected promise (51ms) `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise (52ms) ✓ via return from a rejected promise (52ms) `y` is an already-fulfilled promise for a synchronously-fulfilled custom thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is an already-fulfilled promise for an asynchronously-fulfilled custom thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is an already-fulfilled promise for a synchronously-fulfilled one-time thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is an already-fulfilled promise for a thenable that tries to fulfill twice `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is an already-fulfilled promise for a thenable that fulfills but then throws `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is an already-fulfilled promise for an already-fulfilled promise `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is an already-fulfilled promise for an eventually-fulfilled promise `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise (51ms) ✓ via return from a rejected promise (51ms) `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise (52ms) ✓ via return from a rejected promise (52ms) `y` is an already-fulfilled promise for a synchronously-rejected custom thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is an already-fulfilled promise for an asynchronously-rejected custom thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is an already-fulfilled promise for a synchronously-rejected one-time thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is an already-fulfilled promise for a thenable that immediately throws in `then` `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is an already-fulfilled promise for an object with a throwing `then` accessor `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is an already-fulfilled promise for an already-rejected promise `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `y` is an already-fulfilled promise for an eventually-rejected promise `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise (51ms) ✓ via return from a rejected promise (51ms) `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise (52ms) ✓ via return from a rejected promise (52ms) `y` is an eventually-fulfilled promise for a synchronously-fulfilled custom thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise (50ms) ✓ via return from a rejected promise (51ms) `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise (51ms) ✓ via return from a rejected promise (52ms) `y` is an eventually-fulfilled promise for an asynchronously-fulfilled custom thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise (52ms) ✓ via return from a rejected promise (52ms) `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise (52ms) ✓ via return from a rejected promise (53ms) `y` is an eventually-fulfilled promise for a synchronously-fulfilled one-time thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise (51ms) ✓ via return from a rejected promise (51ms) `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise (51ms) ✓ via return from a rejected promise (50ms) `y` is an eventually-fulfilled promise for a thenable that tries to fulfill twice `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise (50ms) ✓ via return from a rejected promise (50ms) `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise (52ms) ✓ via return from a rejected promise (52ms) `y` is an eventually-fulfilled promise for a thenable that fulfills but then throws `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise (49ms) ✓ via return from a rejected promise (50ms) `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise (52ms) ✓ via return from a rejected promise (52ms) `y` is an eventually-fulfilled promise for an already-fulfilled promise `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise (50ms) ✓ via return from a rejected promise (50ms) `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise (52ms) ✓ via return from a rejected promise (52ms) `y` is an eventually-fulfilled promise for an eventually-fulfilled promise `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise (49ms) ✓ via return from a rejected promise (51ms) `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise (52ms) ✓ via return from a rejected promise (52ms) `y` is an eventually-fulfilled promise for a synchronously-rejected custom thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise (51ms) ✓ via return from a rejected promise (51ms) `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise (52ms) ✓ via return from a rejected promise (52ms) `y` is an eventually-fulfilled promise for an asynchronously-rejected custom thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise (52ms) ✓ via return from a rejected promise (52ms) `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise (53ms) ✓ via return from a rejected promise (53ms) `y` is an eventually-fulfilled promise for a synchronously-rejected one-time thenable `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise (51ms) ✓ via return from a rejected promise (51ms) `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise (51ms) ✓ via return from a rejected promise (52ms) `y` is an eventually-fulfilled promise for a thenable that immediately throws in `then` `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise (57ms) ✓ via return from a rejected promise (51ms) `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise (52ms) ✓ via return from a rejected promise (52ms) `y` is an eventually-fulfilled promise for an object with a throwing `then` accessor `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise (50ms) ✓ via return from a rejected promise (50ms) `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise (52ms) ✓ via return from a rejected promise (52ms) `y` is an eventually-fulfilled promise for an already-rejected promise `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise (49ms) ✓ via return from a rejected promise (49ms) `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise (52ms) ✓ via return from a rejected promise (52ms) `y` is an eventually-fulfilled promise for an eventually-rejected promise `then` calls `resolvePromise` synchronously ✓ via return from a fulfilled promise (50ms) ✓ via return from a rejected promise (49ms) `then` calls `resolvePromise` asynchronously ✓ via return from a fulfilled promise (51ms) ✓ via return from a rejected promise (52ms) 2.3.3.3.2: If/when `rejectPromise` is called with reason `r`, reject `promise` with `r` `r` is `undefined` `then` calls `rejectPromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `rejectPromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `r` is `null` `then` calls `rejectPromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `rejectPromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `r` is `false` `then` calls `rejectPromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `rejectPromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `r` is `0` `then` calls `rejectPromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `rejectPromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `r` is an error `then` calls `rejectPromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `rejectPromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `r` is an error without a stack `then` calls `rejectPromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `rejectPromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `r` is a date `then` calls `rejectPromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `rejectPromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `r` is an object `then` calls `rejectPromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `rejectPromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `r` is an always-pending thenable `then` calls `rejectPromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `rejectPromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `r` is a fulfilled promise `then` calls `rejectPromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `rejectPromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `r` is a rejected promise `then` calls `rejectPromise` synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` calls `rejectPromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise 2.3.3.3.3: If both `resolvePromise` and `rejectPromise` are called, or multiple calls to the same argument are made, the first call takes precedence, and any further calls are ignored. calling `resolvePromise` then `rejectPromise`, both synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise calling `resolvePromise` synchronously then `rejectPromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise calling `resolvePromise` then `rejectPromise`, both asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise calling `resolvePromise` with an asynchronously-fulfilled promise, then calling `rejectPromise`, both synchronously ✓ via return from a fulfilled promise (51ms) ✓ via return from a rejected promise (51ms) calling `resolvePromise` with an asynchronously-rejected promise, then calling `rejectPromise`, both synchronously ✓ via return from a fulfilled promise (50ms) ✓ via return from a rejected promise (51ms) calling `rejectPromise` then `resolvePromise`, both synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise calling `rejectPromise` synchronously then `resolvePromise` asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise calling `rejectPromise` then `resolvePromise`, both asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise calling `resolvePromise` twice synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise calling `resolvePromise` twice, first synchronously then asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise calling `resolvePromise` twice, both times asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise calling `resolvePromise` with an asynchronously-fulfilled promise, then calling it again, both times synchronously ✓ via return from a fulfilled promise (51ms) ✓ via return from a rejected promise (51ms) calling `resolvePromise` with an asynchronously-rejected promise, then calling it again, both times synchronously ✓ via return from a fulfilled promise (50ms) ✓ via return from a rejected promise (49ms) calling `rejectPromise` twice synchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise calling `rejectPromise` twice, first synchronously then asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise calling `rejectPromise` twice, both times asynchronously ✓ via return from a fulfilled promise ✓ via return from a rejected promise saving and abusing `resolvePromise` and `rejectPromise` ✓ via return from a fulfilled promise (100ms) ✓ via return from a rejected promise (101ms) 2.3.3.3.4: If calling `then` throws an exception `e`, 2.3.3.3.4.1: If `resolvePromise` or `rejectPromise` have been called, ignore it. `resolvePromise` was called with a non-thenable ✓ via return from a fulfilled promise ✓ via return from a rejected promise `resolvePromise` was called with an asynchronously-fulfilled promise ✓ via return from a fulfilled promise (51ms) ✓ via return from a rejected promise (51ms) `resolvePromise` was called with an asynchronously-rejected promise ✓ via return from a fulfilled promise (50ms) ✓ via return from a rejected promise (49ms) `rejectPromise` was called ✓ via return from a fulfilled promise ✓ via return from a rejected promise `resolvePromise` then `rejectPromise` were called ✓ via return from a fulfilled promise ✓ via return from a rejected promise `rejectPromise` then `resolvePromise` were called ✓ via return from a fulfilled promise ✓ via return from a rejected promise 2.3.3.3.4.2: Otherwise, reject `promise` with `e` as the reason. straightforward case ✓ via return from a fulfilled promise ✓ via return from a rejected promise `resolvePromise` is called asynchronously before the `throw` ✓ via return from a fulfilled promise ✓ via return from a rejected promise `rejectPromise` is called asynchronously before the `throw` ✓ via return from a fulfilled promise ✓ via return from a rejected promise 2.3.3.4: If `then` is not a function, fulfill promise with `x` `then` is `5` ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` is an object ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` is an array containing a function ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` is a regular expression ✓ via return from a fulfilled promise ✓ via return from a rejected promise `then` is an object inheriting from `Function.prototype` ✓ via return from a fulfilled promise ✓ via return from a rejected promise 2.3.4: If `x` is not an object or function, fulfill `promise` with `x` The value is `undefined` ✓ already-fulfilled ✓ immediately-fulfilled ✓ eventually-fulfilled (50ms) ✓ already-rejected ✓ immediately-rejected ✓ eventually-rejected (50ms) The value is `null` ✓ already-fulfilled ✓ immediately-fulfilled ✓ eventually-fulfilled (50ms) ✓ already-rejected ✓ immediately-rejected ✓ eventually-rejected (50ms) The value is `false` ✓ already-fulfilled ✓ immediately-fulfilled ✓ eventually-fulfilled (50ms) ✓ already-rejected ✓ immediately-rejected ✓ eventually-rejected (50ms) The value is `true` ✓ already-fulfilled ✓ immediately-fulfilled ✓ eventually-fulfilled (50ms) ✓ already-rejected ✓ immediately-rejected ✓ eventually-rejected (50ms) The value is `0` ✓ already-fulfilled ✓ immediately-fulfilled ✓ eventually-fulfilled (50ms) ✓ already-rejected ✓ immediately-rejected ✓ eventually-rejected (51ms) The value is `true` with `Boolean.prototype` modified to have a `then` method ✓ already-fulfilled ✓ immediately-fulfilled ✓ eventually-fulfilled (50ms) ✓ already-rejected ✓ immediately-rejected ✓ eventually-rejected (51ms) The value is `1` with `Number.prototype` modified to have a `then` method ✓ already-fulfilled ✓ immediately-fulfilled ✓ eventually-fulfilled (50ms) ✓ already-rejected ✓ immediately-rejected ✓ eventually-rejected (51ms) mocha promise sanity check ✓ passes with a resolved promise ✓ passes with a rejected then resolved promise ✓ is the native Promise onFinally no callback ✓ from resolved ✓ from rejected throws an exception ✓ from resolved ✓ from rejected returns a non-promise ✓ from resolved ✓ from rejected returns a pending-forever promise ✓ from resolved (100ms) ✓ from rejected (100ms) returns an immediately-fulfilled promise ✓ from resolved ✓ from rejected returns an immediately-rejected promise ✓ from resolved ✓ from rejected returns a fulfilled-after-a-second promise ✓ from resolved (1501ms) ✓ from rejected (1501ms) returns a rejected-after-a-second promise ✓ from resolved (1501ms) ✓ from rejected (1502ms) 915 passing (20s) Removing node_modules/promises-aplus-tests Removing node_modules/lie create-stamp debian/debhelper-build-stamp dh_prep -i dh_auto_install --buildsystem=nodejs -i dh_auto_install: warning: ./package.json#files: dist does not exists dh_auto_install: warning: # /! "types" field should be replaced by "typings" in ./package.json Please report this bug dh_auto_install: warning: ### Missing ./dist, skipping dh_auto_install: warning: ### Missing ./build/config.gypi, skipping Found "files" field in ./package.json, using it Found "types" field in ./package.json, using it mkdir -p /build/node-lie-fEustz/node-lie-3.3.0\+dfsg/debian/node-lie//usr/share/nodejs/lie/lib cp --reflink=auto -a ./lib/index.js /build/node-lie-fEustz/node-lie-3.3.0\+dfsg/debian/node-lie//usr/share/nodejs/lie/lib/ cp --reflink=auto -a ./lib/browser.js /build/node-lie-fEustz/node-lie-3.3.0\+dfsg/debian/node-lie//usr/share/nodejs/lie/lib/ cp --reflink=auto -a ./polyfill.js /build/node-lie-fEustz/node-lie-3.3.0\+dfsg/debian/node-lie//usr/share/nodejs/lie// cp --reflink=auto -a ./lie.d.ts /build/node-lie-fEustz/node-lie-3.3.0\+dfsg/debian/node-lie//usr/share/nodejs/lie// cp --reflink=auto -a ./lie.d.ts /build/node-lie-fEustz/node-lie-3.3.0\+dfsg/debian/node-lie//usr/share/nodejs/lie// cp --reflink=auto -a ./package.json /build/node-lie-fEustz/node-lie-3.3.0\+dfsg/debian/node-lie//usr/share/nodejs/lie// Set ${nodejs:Version} to 12.19.0~dfsg dh_installdocs -i dh_installchangelogs -i dh_perl -i dh_link -i dh_strip_nondeterminism -i dh_compress -i dh_fixperms -i dh_missing -i dh_installdeb -i dh_gencontrol -i dpkg-gencontrol: warning: package node-lie: substitution variable ${nodejs:Version} unused, but is defined dh_md5sums -i dh_builddeb -i dpkg-deb: building package 'node-lie' in '../node-lie_3.3.0+dfsg-2_all.deb'. dpkg-genbuildinfo --build=all dpkg-genchanges --build=all >../node-lie_3.3.0+dfsg-2_all.changes dpkg-genchanges: info: binary-only arch-indep upload (source code and arch-specific packages not included) dpkg-source --after-build . dpkg-buildpackage: info: binary-only upload (no source included) I: running special hook: sync-out /build/node-lie-fEustz /tmp/node-lie-3.3.0+dfsg-2hj3et8ne I: cleaning package lists and apt cache... I: creating tarball... I: done I: removing tempdir /tmp/mmdebstrap.0Y5sxM9I_P... I: success in 409.8309 seconds md5: node-lie_3.3.0+dfsg-2_all.deb: OK sha1: node-lie_3.3.0+dfsg-2_all.deb: OK sha256: node-lie_3.3.0+dfsg-2_all.deb: OK Checksums: OK