question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

"openedRequest.abort is not a function" in Window.close()

See original GitHub issue

Basic info:

  • Node.js version: 11.12.0
  • jsdom version: 15.1.1

Minimal reproduction case

const { JSDOM } = require("jsdom")

const content = `
<html>
<head>
  ...
</head>
<body>
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAloAAAEnCAYAAABxD+1oAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAACrNSURBVHhe7Z1Pr+TGea8l50sk0J8Rsg0QZKVEkWVYX8GIgvSMgPgjWBuDZ4BEuR/ASADxGF5Z2Xql6dkYuBf2ZHGBwNMCvLpQxjBkWDMNy5aBUSAdYXCUGd56ySqyyLdIVjUPTze7nwf4zTSLRXZVdU/zmSKb/dzDhw+LP/7xj4QQQggh5IryySef/PZXv/rVvz8nCwAAAABwdXz22Wf/F9ECAAAAmAFECwAAAGAmEC0AAACAmUC0AAAAAGYC0QIAAACYCUQLAAAAYCYQLQAAAICZSBKtTb4qVqsq+cYWGvzy1Sor1ttNkXfrbddFlq2LrV0EAAAAOHbiRWuTF6vamkSkcvOnsC3WmchVuVBh6mZSUMtVoA4AAADAkbPjqUNftMxjI1GZm9ESGeuKVkvS4rm8vCwuLi4IIYQQQg4iqSSLljtNWIpUVWCWnXSJW2VFvvFPHVazWXmeVSKWcPrwD3/4QyG/wUgIIYQQcgh58uSJtZQ4dr4YXoSqli0fN5tlqeptjGxVMiaitsPkFgAAAMDiSLpGSwuUWQ6UNyLlTjHKrBaiBQAAAKdF0oxW69uFni355b50SXm9XJ5iNHX45iEAAACcCDufOgQAAACAYRAtAAAAgJlAtAAAAABmAtECAAAAmAlECwAAAGAmEC0AAACAmUC0AAAAAGYC0QIAAACYCUQLAAAAYCYQrQheeeWV4rnnnts53/72t+2eAAAA4JRAtCJAtA6Y//zPorh3T+fxY1tBfm+z+nmo+lejtusiG/opKFnf+UFO/zc6N2u7rdSz+w79BJVP9TNVWdGzOopNnrZ9sP5Am3fql9vmAKjaYl7vm3mxeWYLD4zH5n15z7w/u2nYFOc3b5Zjnt9/VpTdMK/H2dm6eJTcJ7evvLj/rLOx7PN8U3SLZ2N7N/H5pO3yOrY32JyfFWszEOO7CW/fi7TPjnud7I4Zc7N9aN179+u+bO+eFTdvNuvec68bgAXRigDROmDMa2MGWccdvNyPnos8lHIlP3A+IixSt1e0zIHcSVq9T0ffvt2Pq0/jykSr07eKHfvVqrdPTFuMjGwP/AgnUvX888+bt2j7M+KZO2pvzoszM9DPzGtQyZUZ+7NKLtI5ZdFKRNpXjnezZxGos/Wj6rVotX1b3LWvyTO1nbfOlgAgWhEgWgdMqmjJj5sHRcND6vaIVjUzZSILbp+2jnzIrnMtHvU2IludfZcytJH9ZM0skrdPf9u8I07NOm9WaqB+SaBvwqR+mW22a9N+04eyj/V6bxbA1JEDVrCf5jW5actybypKbW/Lt+uzur7sQxykrpubfksbbGUpr+vm96uDZqcNpcNIG+ysRD2TNAPJoiXtkr6PNGhz3ulnWX9MtGSs3DjI7E21KrivjiiVwrMOj5m/fXbHiEq9fff53Bah52xEq1ln39NOYsxY9b9mnqiVMuS/5u3nLpkiWjfPijuuTQABEK0IEK0DZky0zAduc+qwmpmRD+vqA1fLQ4kIgftQ9iIOUu7PbRes14hGg7TBlss21Y5KGtFybfFmj1pSKPvwxKkjjCI6uZGM3voO1WbX3h37ZbeR5/fb0+6n7VNPP/2Zt+3WPTAHN7N9dfAydc2Bci3TVVIu+7BHNZEukUxzOLYzWubv8gBrVjpJqaqaxZtFvrZtKAub/W5yc+C0O63bMAOjomX60Zw6fGTG6Mx7vzYy1MKNVd2nSgKaffWIlhmnqtzbRuSl3pcsmjEzg1kKRUe0RFid9NRj1tleZOXcbe89X2vWJ/ic96vX8b4vmtKfZjt/dku/Zl3RchLVM+NUts8T+3q87fbddd6pw+q5PFE06562dg6nDqIVAaJ1wIyKVkM567LemINXJQ0yI2M+wzUtSaho6naEpBaHivA+zTZjotUtMzst5cnbV0tIRGz8D36bvvo1gb5V7NgvW68a2/aTtdvY38/y+Ww9fx+tmSvZ3hwczUbVjI+t02Da0hEt2d6fISu3NTIqbXCltWCZNpzZ2ZFMZjHs+qtmXLQapP1n7v1q1tfSY9f7lGNVXyeUlTMsMiaxpw6dtMh+SjGqimVFcFanrC+vpxUQN3PVvV6pXtfzfLJYy1i1yj7nunwd13fk30Czzt/OF6B65qymI1o9z13TkrEOre3NfvvqWeR1KsesvwqcGIhWBIjWAfMP/1CYAdb55S9tBYeTHZlJqaRnb6JVbyPlAwLSmrWSdttywazris1gfUegbxU79svW64pWe9m2pa+fDu955YAv21fHKplxkbpmydTxZ7Skz9WslWlL7IxWq8wcdOudGez+S0+ZgV+a9+Wbb75p3qLfbkWLlhMF6bv83S9alZCZA3u1FD+jFZAP8yAwu2SesyUist+O8Lh1Tszs9jVDshM9ozUwG6XkZy7RMvjtlced7aT95/eftvcPJw2iFQGitXxEFOoDvwiJ/G+7IxM1csA3H6Q+LdFy20o9+7/2Op3tKmQb86FfPhbpcPXtNScDAiLPW9U14tIRp2ZdFdnFUP2SQN8qdu1Xtc2mO6PV2kd1utZJjsP1078Wq56BMtu7GaZ6e7uunL2p9y0HUykVwTLLps9ZXVbtu3Xtj+zXtMEdBJ1o+fXmvEYrFjlY1zNrcjAv+zZw6tDO7PhjJfKZLFrl4+71UlIqktO+Viqr38ftMWtt79aNyI5+zkaUmnX2PW2387cZvUbrKkXLIM/thLI7i6dn1+DUQbQiQLQAAABgFxCtCBAtAAAA2AVEKwJECwAAAHYB0YoA0QIAAIBdQLQiQLQAAABgFxCtCBAtAAAA2AVEKwJECwAAAHYhSbT8+/b4t9Xx791T3UrH3l/Hryf31em7b9GBg2gBAADALsSLVuuu094NGKXcCZR7bP4ub15Yy5W9M/QSLcuAaAEAAMAu7HjqsBGt9k9t2PKuaLUkbXkgWgAAALALyaLlThM6uRLRahxKZq5EwPxTh9VslvxkQ3l6MeH04aefflo8ePBg73nhhReCAhWbV199NbhfQgghhCwrFxcX1lLi2PlieDeTFZzRsktCtd7+Ar1ZFlFb2uQWM1oAAACwC0nXaDVC1YhW8BqtsobgxMvNdCFaAAAAcDokzWj53zr0r7nS3zqskPJazkTCEk8dHgqIFgAAAOzCzqcOTwlECwAAAHYB0YoA0QIAAIBdQLQiQLQAAABgFxCtCBAtzdQx+e53v2v3BAAAcLwgWhEgWhpECwAAYBxEKwJES4NoAQAAjINoRYBoaRAtAACAcRCtCBAtDaIFAAAwDqIVAaKlQbQAAADGQbQiQLQ0iBYAAMA4iFYEiJYG0QIAABgH0YoA0dIgWgAAAOMgWhEgWhpECwAAYBxEKwJES4NoAQAAjINoRYBoaRAtAACAcRCtCBAtDaIFAAAwDqIVAaKlQbQAAADGQbQiQLQ0iBYAAMA4iFYEiJYG0QIAABgH0YoA0dIgWgAAAOMgWhEgWhpECwAAYBxEKwJES4NoAQAAjINoRYBoaRAtAACAcRCtCBAtDaIFAAAwToJobYt1tipWK5tsbUoqNrlXvsqK9XZT5HY539hK23WRedssCURLg2gBAACMEy9am7xY1dZUyVW1KAImclUWV5i6mRTUchWosyAQLQ2iBQAAMM7Opw6368yK1qbIjURlbkZLCrui1ZG0pYFoaRAtAACAcXYTLV+c5PEqN7pVUQmYf+qwms3K86wSsYTTh59//nkh7dp3Xn755aAsxOb1118P7nfJmTom8l4I7ZcQQgg55FxeXlpLiSNZtMrrsYZmp9xslkXEK1tvjGxVMtacchzniy++CHbyuoNo6SBahBBCTjFPnz61lhJH8sXwSpICYtXUkZktESzZNl20DgVOHWo4dQgAADBOtGi1v1lYxQmWv86XLimvl8tTjKbOAr95iGhpEC0AAIBxdr4Y/pRAtDSIFgAAwDiIVgSIlgbRAgAAGAfRigDR0iBaAAAA4yBaESBaGkQLAABgHEQrAkRLg2gBAACMg2hFgGhpEC0AAIBxEK0IEC0NogUAADAOohUBoqVBtAAAAMZBtCJAtDSIFgAAwDiIVgSIlgbRAgAAGAfRigDR0iBaAAAA4yBaESBaGkQLAABgHEQrAkRLg2gBAACMg2hFgGhpEC0AAIBxEK0IEC0NogUAADAOohUBoqVBtE6ADz4oinff3T3/+q92RwAApwuiFQGipUG0TgB5jcxrtXPMe6R49szuDADgNEG0IkC0NIjWCYBoAQBMBtGKANHSIFonAKIFADAZRCsCREuDaJ0AiBYAwGQQrQgQLQ2idQIgWgAAk0G0IkC0NIjWCYBoAQBMBtGKANHSIFonAKIFADAZRCsCREuDaJ0AiBbE8G//Fr6PWmzef5/3CRw1iFYEiJYG0ToBEC2I4c//PPz6x0Y+H3mfwBGTIFrbYp2titXKJlubkopN7sqzYl0Wborc1ss3ZRWz+brIvG2WBKKlQbROAEQLYkC0AAaJF61NXqxqa6rkqlyUcidQ7rH5OxPjquVKJM1J2PJAtDSI1gmAaEEMiBbAIDufOtyus1K05O9SqkpkJisvNl3R6khaLJeXl8XFxcXec+PGDfN5EBaGmLzxxhvB/S45U8fk7bffDu6XHE6+Nq+RebF2zjPzHrn48svgvsnx5JkIdeD1j83/yOcj7xOyoDxL/I/BbqLliZMTrgqZuTKi1Tp1WM1m5XmmTjmOIW16+PDh3vPiiy+az4OwMMTktddeC+53yZk6Jm+99VZwv+Rw8qV5jcyLtXO+Nu+Rh598Etw3OZ58/dJLwdc/Nk/k85H3CVlQvvrqK2spcSSLVnk9ljc7FZzRsktCtX5jBazafofJrb3CqUMNpw5PAE4dQgycOgQYJPlieCVJ7rqs7uMSJ15upgvROhYQrRMA0YIYEC2AQaJFq/lmYRM3k9Wsa1/wLuX1bJdImNRJOHV4KCBaGkTrBEC0IAZEC2CQnS+GPyUQLQ2idQIgWhADogUwCKIVAaKlQbROAEQLYkC0AAZBtCJAtDSI1gmAaEEMiBbAIIhWBIiWBtE6ARAtiAHRAhgE0YoA0dIgWicAogUxIFoAgyBaESBaGkTrBEC0NO+8U4nBrvne945vTBAtgEEQrQgQLQ2idQIgWpo33wz3NTbHKBWIFsAgiFYEiJYG0ToBEC0NoqVBtAAGQbQiQLQ0iNYJgGhpEC0NogUwCKIVAaKlQbROAERLg2hpEC2AQRCtCBAtDaJ1AiBaGkRLg2gBDIJoRYBoaRCtEwDR0iBaGkQLYBBEKwJES4NonQCIlgbR0iBaAIMgWhEgWhpE6wRAtDSIlgbRAhgE0YoA0dIgWicAoqVBtDSIFsAgiFYEiJYG0ToBEC0NoqVBtAAGQbQiQLQ0RydaH3xQFO++Oy3HBqKlQbQ0iBbAIIhWBIiW5uhEa6pUSI4NREuDaGkQLYBBEK0IEC0NohXIsYFoaRAtDaIFMAiiFQGipUG0Ajk2EC0NoqVBtAAGQbQiQLQ0iFYgxwaipUG0NIgWwCCIVgSIlgbRCuTYQLQ0iJYG0QIYBNGKANHSIFqBHBuIlgbR0iBaAIMgWhEgWhpEK5BjA9HSIFoaRAtgkB1Ea1Pkq9z82bDJV8Vq5ZIV663UqZZzV3G7LrJsXWzt4pJAtDSIViDHBqKlQbQ0iBbAIGmitcmtTPmitS3WmciVXRRMvUwKarkK1FkQiJYG0Qrk2EC0NIiWBtECGCRBtIwsrUWvRJp80doUuZGozM1oyRRWV7RE0OqprXg+/fTT4sGDB3vPCy+8YD4PwsIQk1dffTW43yVn6ph85zvfCe53X/lv0x7TsEkJ7XfJmToml+Y98uC//iu476Xm4q//OtjX2FzIZ8GRjcnliy8G+xqbYxwTcty5uLiwlhLHDqcOO6JVznI1y9t1VuQb/9RhNZuV51klYgs8fciMloYZrUCODWa0NMxoaZjRAhhkumh1cbNZFhGvbL2pt5HruXaY3NoriJYG0Qrk2EC0NIiWBtECGORKZrS6YtWIlLtwvtkG0ToOEK1Ajg1ES4NoaRAtgEGuZEbL/9ahL11SXi+Xpxg5dXgsIFqBHBuIlgbR0iBaAIPsIFqnB6KlQbQCOTYQLQ2ipUG0AAZBtCJAtDSIViDHBqKlQbQ0iBbAIIhWBIiWBtEK5NhAtDSIlgbRAhgE0YoA0dIgWoEcG4iWBtHSIFoAgyBaESBaGkQrkGMD0dIgWhpEC2AQRCsCREuDaAVybCBaGkRLg2gBDIJoRYBoaRCtQI4NREuDaGkQLYBBEK0IEC0NohXIsYFoaRAtDaIFMAiiFQGipUG0Ajk2EC0NoqVBtAAGQbQiQLQ0iFYgxwaipUG0NIgWwCCIVgSIlgbRCuTYQLQ0iJYG0QIYBNGKANHSIFqBHBuIlgbR0iBaAIMgWhEgWhpEK5BjA9HSIFoaRAtgEEQrAkRLg2gFcmwgWhpES4NoAQyCaEWAaGkQLR15nafk/ffft405EBAtDaKlQbQABkG0IkC0NIiWTqifKXn33XdtYw4EREuDaGkQLYBBEK0IEC0NoqUT6mdKEK0FgGhpEC2AQRCtCBAtDaKlE+pnShCtBYBoaRAtgEEQrQgQLQ2ipRPqZ0oQrQWAaGkQLYBBEK0IEC0NoqUT6mdKEK0FgGhpEC2AQRCtCBAtDaKlE+pnShCtBYBoaRAtgEEQrQgQLQ2ipRPqZ0oQrQWAaGkQLYBBEK0IEC0NoqUT6mdKEK0FgGhpEC2AQRCtCBAtDaKlE+pnShCtBYBoaRAtgEF2EK1Nka9y82fDJl8Vq5UkK9bbssTUqcpyV3G7LrJsXZSrFwaipUG0dEL9TAmitQAQLQ2iBTBImmhtcitUnmhJmRMo99j8nYlx1XK1LdaZk7DlgWhpEC2dUD9TgmgtAERLg2gBDJIgWkaW1qJXIk2NaG3XWSVVJXa2qytaImD11FY8n3/+eSHt2ndefvll83kQPjjG5PXXXw/ud8mZOiYi7KH97itPTHtMwyYl1M+UfP/73w+2bV+ZOiZPzXvkj599Ftz3UnP5zW8G+xqbS/ksOLIxeXrjRrCvsTnGMSHHncvLS2spcexw6lCLVuNQbp1/6rCazcrzrJoNSzh9+MUXXwQ7ed1BtHQQLZ1QP1OCaB1+EC0dRIucWp4+fWotJY4rES01o2WXhGr9pt5GrufaYXJrr3DqUMOpQ51QP1PCqcMFwKlDDacOAQaZLFrBa7TKFYITr2YbROs4QLR0Qv1MCaK1ABAtDaIFMMh00TLobx1WSHk92yUSlnjq8FBAtDSIlk6onylBtBYAoqVBtAAG2UG0Tg9ES4No6YT6mRJEawEgWhpEC2AQRCsCREuDaOmE+pkSRGsBIFoaRAtgEEQrAkRLg2jphPqZEkRrASBamomi9Zu/+ZviX/75n8v3/675+OOPbWMADg9EKwJES4No6YT6mRI5YBwUiJYG0dJMFK17f/VXxfPm79C/idj8/Oc/t40BODwQrQgQLQ2ipRPqZ0oQrQWAaGkQLYBBEK0IEC0NoqUT6mdKEK0FgGhpEC2AQRCtCBAtDaKlE+pnShCtBYBoaRAtgEEQrQgQLQ2ipRPqZ0oQrQWAaGkQLc1//EdR3Lu3ez76yO4IjgFEKwJES4No6YT6mZJjE63HL79c9mlK7slB55BAtDSIluYb3wj2NTr/+I9Fkfh7enC4IFoRHKVoffBBYY5kO+eViT8qjWjpiFgcFBPH5Dcvvjj5AHpwY4JoaRAtDaIFHohWBEcpWhMPoq+Yg2ior7FBtHQQLR1EawEgWhpECzwQrQgQLR1ESyfUz5QgWjqI1gJAtDSIFnggWhEgWjqIlk6onylBtHQQrQWAaGkQLfBAtCJAtHQQLZ1QP1OCaOkgWgsA0dIgWuCBaEWAaOkgWjqhfqYE0dJBtBYAoqVBtMAD0YoA0dJBtHRC/UwJoqWDaC0AREuDaIEHohUBoqWDaOmE+pkSREsH0VoAiJYG0QIPRCsCREsH0dIJ9TMliJYOorUAEC0NogUeiFYEiJYOoqUT6mdKEC0dRGsBIFoaRAs8EK0IEC0dREsn1M+UIFo6iNYCQLQ0iBZ4IFoRIFo6iJZOqJ8pQbR0jk20Hn/zm8U9IwXyG4675ne/+51tzIGAaGkQLfBAtCJAtHQQLZ1QP1OCaOkcm2hdhVT8+Mc/Lp4d0qwYoqVBtMAD0YoA0dJBtHRC/UwJoqWDaOkgWjqIFhwyiFYEiJYOoqUT6mdKEC0dREsH0dJBtOCQmSxam3xVrFYuWbHe2hXFpshteb6xRdt1kWXroq6yEBAtHURLJ9TPlCBaOoiWDqKlg2jBITNRtLbFOvPlymOTF5msqOVqoO6Bg2jpIFo6oX6mBNHSQbR0EC0dRGsB/MmfhPsam3/6p8WOyUTR2hS5kafMzWjVU1eGrmiZ5db6CC4vL4uLi4u958aNG+Z1Dv8Dj8kbb7wR3O8+8/Xbb4ffzJG58cIL5q9wf2Pytnn+ULv2lanjIQn1MyW3b98Otm1fmTomH5v3yNQD6KGNyf9861vBvsbmZ3/5l5PH5Ec/+lHx5ZdfBtu3jzwz/xE1Dds5VzEmP/3pT4Nt21emitbXt24VFwf0Gl9FporWpXGNiy++CO77upP6H51poiXytMqNblVs11lzmrB16rCazcrzrBKyyNOH0qaHDx/uPS9OnL157bXXgvvdZ758663gmzk2L/3Zn5m/wv2NyVvm+UPt2lemjock1M+UvPPOO8G27StTx+TXf/qnkw+ghzYmT/72b4N9jc3//ou/mDwmP/jBD4Jt21e+fumlYF9j83+uYEx+8pOfBNu2r0wVrS//7u+Kh598Etz3UjNVtP77e987mDH56quvrKXEcbUXw7tZrA4iYNl6Y2SrkjK5ritxcmuvcOpQh1OHOqF+poRThzqcOtTh1KEOpw4XAKcOd5/R8sWqPaPlkJktESyZ1UK0DgZEqw2ipUG0NIiWBtHSIFoaRGv3GS3/W4eh2SxZX5eXpxrjTx0eCoiWDqKlE+pnShAtHURLB9HSQbQWAKJ1RacOjxRESwfR0gn1MyWIlg6ipYNo6SBaCwDRQrSGQLR0EC2dUD9TgmjpIFo6iJYOorUAEC1EawhESwfR0gn1MyWIlg6ipYNo6SBaCwDRQrSGQLR0EC2dUD9TgmjpIFo6iJYOorUAEC1EawhESwfR0gn1MyWIlg6ipYNo6SBaCwDRQrSGQLR0EC2dUD9TgmjpIFo6iJYOorUAEC1EawhESwfR0gn1MyWIlg6ipYNo6SBaCwDRQrSGQLR0EC2dUD9TgmjpIFo6iJYOorUAEC1EawhESwfR0gn1MyWIlg6ipYNo6RybaP3u7/++uGf6dO/evZ3z+PFj25gDAdFCtIZAtHQQLZ1QP1OCaOkgWjqIls6xida/v/568Y3nnzcPw/2Nyc9+9rPDep8gWojWEIiWDqKlE+pnShAtHURLB9HSQbR0EK3DAdGKANHSQbR0Qv1MCaKlg2jpIFo6iJYOonU4IFoRIFo6iJZOqJ8pQbR0EC0dREsH0dJBtA4HRCsCREsH0dIJ9TMliJYOoqWDaOkgWjqI1uGAaEWAaOkgWjqhfqYE0dJBtHQQLR1ESwfROhwQrQgQLR1ESyfUz5QgWjqIlg6ipYNo6SBahwOiFQGipYNo6YT6mRJESwfR0kG0dBAtHUTrcEC0IkC0dBAtnVA/U4Jo6SBaOoiWDqKlg2gdDohWBIiWDqKlE+pnShAtHURLB9HSQbR0EK3DAdGKANHSQbR0Qv1MCaKlg2jpIFo6iJYOonU4IFoRIFo6iJZOqJ8pQbR0EC0dREsH0dJBtA6H0xAt+bAOvXCRmSoViJYOoqWDaOkgWjqIlg6ipXNsovW/vvWtyWPy61//2jbmekG0IoJo6SBaOqF+pgTR0kG0dBAtHURLB9HSQbTmBNHSIFptEC0NoqVBtDSIlgbR0iBau4vWJl8Vq5UkK9ZbW1iyKfKyfFXkG1u0XRdZti5a1a4DREuDaLVBtDSIlgbR0iBaGkRLg2jtKFqbvFg5cfIfC2Y5E/Oq5WpbrLOujF0TiJYG0WqDaGkQLQ2ipUG0NIiWBtHaTbS266ySqRKZwcrNn5auaImI1VNb1wyipUG02iBaGkRLg2hpEC0NoqVBtHYXrcadZMbKE63WqcNqNivPs+o0Y+Tpw+12Wzx48IAQQggh5CDy5MkTaylxzDej5VHV29QiJtd17WtyCwAAAOC6mO8arRonYM2MF6IFAAAAp8A00TL0f+uwQtbXs14iYwmnDgEAAACWzGTRAgAAAIAwiBYAAADATCBaAAAAADOBaAEAAADMBKIFAAAAMBOLEi25H1f1DUcT7/4QY998jCW8f7kthdu/ifeNyZjn7auTWj6VlL7N0a+K/nut7YPx91NzG5JTGJO+8XDI+ua+eeNjsslv9q4fWleOyU0zJgdwU+vt+qy4WY/J/cLdaHtzfrMplz48qlY05U2ZT9/64e02xXk5Hnp/+2B714zJTdt3b0xC5X6/7ph+hXrQV2d42wMek/fuF09tszbnt2x504dQWZcPe+r0lVd8WJzfOi/umycP7fPq2RZ3b5v2lK9RlffuP63fD1P58O7dYrvjzsptH62Ls/ONeS2uZzSGWI5odX6QepPbD+ioe3lFMLT/zkG4XIx53r46qY+nktK3PKINMW3ubivL5T/GAxGtqDGxEjTUL0dfnaFtZflQxqRvPBy2ra1btfT1SzBlN7319WNhbJ0bk31/PpoxOTtbF+Z4VrI5PzNjIgvmPyhn5rFb4dicl30pi/3Hjr71Q9vJcnlgzYv7hyAV27t2TKq2lGNiGvtM2mn+3bgmiiS5z5Kyrqz3tqvxy2Meu20WMia3vD6Uj++b93e3rNsHv/zDiMeCLN+U/7y8d02iVUlW3hIrET3T94emzJbsjtnXbdM/Z6xJ2G0RrV0wBz3zj7b1YW5o/y97yuxAeP9d5PnkOBzzvH11UsunE9+3LLv6fpk1xXpd1qhvWrt/Ysak6sM64nVZ/pgMjIeTMCNBri/9/apQ670Zqv513picNfX3x6Y4Nwez0q1aSLnpQymEJnb2Rma/ztaP7EFGz7j0re/frjsezb72RzUmXTmQGZ1zEStvTB65fpVV9XgIsl2oTl+5jMXduyJ05u+z84Mek5aAiTydB8bEzkD5tPvezFL1lZs1akzae5wBETvTnz6J2d69bfouM+RGhq34NbNx5j9sdx7Ws35+eTUb+Kwp6y572/rP8Qv7HG5/t6SuHMvMezI3Alr+5y27Uzx0T2r48Ie2Xvm8vyieVjstbt8+a/5td7bZlYWIlhyMbMcl3iyMfGg3i1LP/IO0S/H077+FOdC4dTHP21cntXwaaX2bo18NV9WnqYyPiTstJkJw/GMyNB6eRHVEa6hfQ+ujxmTvoiVtcKc3ZUyaU2Ry0LxpDvxuNkVEKTeNdX/bUiVHfevHtguX7QM5kLvTee0xKU/zeculFMjv295v+hUSI6l37vXd1ekrbwjv7/rpjIkRg1aTRLBkpskcsEW4xvtlSl2dsjgwJp3yZutQ2UwY0bptpK9yEPO83ilEOX34aH27uGXeD7WIdcRMJOl887R4JmJTzzrJfmQ2UGbEvBmtnm3Vc9R4M1q3nOj5+za45y07IOtuVzNxpWitrVx55bLNBBZ3jVbrGGCQsqH/WVdl9h9BK9164f07ygOvt3L8efvrpJZfBbF9m6NfDeaA0SMVTmxC0jMXQ2PikDrSrlMYk9B4uP77kf6M9UutL2ckqqWhdRVOLOyipb6uyzRy6gdfLG0J6sEcTM9Mf+rZiqpQzeDIvkLr+8ob+kWrvo7JF8GZactChSorZVRmH9wMTKhf1XbNLI03Jj3lDeYg2CNahzQmIp/VMftucWb6cOdO1u7XlcxoOZoxae9RXKU9QzSZnhktX4Kkra5rUl7PHtn4M1PNuqy4U4pNI1p927p/b+45GjzR8k4dfnhupMmJliH4vC0BM9v8sL3Nrizr1GHrw3xTrOXDWmZi3CkP/3EyPfuXDznzv311rIt53r46qY8nk9C3mDbEtDm4bb9UXD/976dGAkyLRQrM/8yH+2WIGYfgtocyJn3vEQ/T/npsxvplyuRaI7e+fiwMrStxYmEX90b3AN+8R0Ss6g9sJ2MiF6YvwWuthL71Y9vV49Eq3BN6TO7eNWMh7RYBtsWleMx1jVZJv2hdP+ExqQW6LLZSNdc1WiX9onX1yGzPreLMOwXoyuS6ra5oSXubGbAGkZ2mnmwfntEa39ZnXLRk29tr13Z5Xm9G65RFq/7fvRcnCM26zgW8CfTtP1TuDjbh5zUHLPPh4hb72pZaPoVQH4b6Fm7DtH5VHI5o9Y2JWmcLj31MhsajxgiGL6FjY7L7tw4PQ7Sab701cafC/HWZ+bB3TW3KTb9qWzIHWXNQlGu9wuv7yysOR7SGxqScwbEzBG4my+9X8y25ajycJITr9JdXNFKxb8p2dmZcym/flW1sxqsqk/rueqP+MWmuSWr3va+8ohmTdvl8+NdO1X00Tx6SoGBdEZtbzWfBe+9l9gJ7mbEzY2evkWrGzG77i4DM1ci2pr7UlWuv6jH1pKnneZ8yo7UU2gff4+FY+zUFxkTDmGga0QKhLRUgMCbHDKIFAAAAMBOIFgAAAMBMIFoAAAAAM4FoAQAAAMwEonWCtO6N5H21zP/mmf4GXujbYRV9dVLL90nfmDj8ez+d+pg0bW3aGzcm4W8aRpU/2v9FwvJ1ffcNsu49mkLr/G/Nhdo/tL77jTtHX/m+8L9pqG5g6rXTtbSv3JG63dj+rovWOHi/dVixqe95VS4NfHNw7HcQU7+NOPwtxXlp3adK3b9LvhnY3Aes1U7vBqF95T5Sp3oevW2wvL4jfP8+rxpE69TY92/89T3eJym/8xfT/r46qY/3Se+YyO0oAuMz1n5TLveHcnViH5tjQ/vxvuj93cNyYeB3/uz6bvv9su76vnVD2+yD7cDvHrrymMeO1O36Hl83feNQLZiDuvyHofoNwnLZa3PrXlj+cug+WX330Up9fB3IbRLk+dxtEvxbK0hb/N9ltG0r78Ye89gnddvW4x82j2cG0To5Yr5+X4nWHL/x11e+X0w7+sak8zt/Me0/7jGRctPechbBxAhGsP2dzy5Vp7zB41D5WVle7aYp3x/9t2gob1iqfufP3gG8rGG2bd3Qstqmb33fuqFt9kM1Jurg7YuHCJCV0PadzQNj0rM+tfz66RkH86+n+xuEqs3eTFd7XXvGR+hbn1ru9jcv5vncDUdbeGNy24xJ2U7/flh++8Pl/h5Tt5Xy5kalHxY/LMvnn9VCtE4KmY2wBwN7kOziTgHJQU4Ogk2V8I01++qklu+PoTGx0lA+bETrpMfEjIP/81XSdrlz/tWPSXW39QpTvtcbmMrzu9OYMh7t04bl6SuvrBSickzcQcG1v9nI9S+0vm/d0DbXj8iDO22nx6QULDk9Y3/jT5ADf/MzNY18OPrWp5ZfL51x6P7WYUlcm/vWud3V68uCwD4jy93+5sM8l/fbh+Gf/ZE6pj1WfsrfPXTtHCn395S6rSs3D71yRAtmoH1wCyN15B9Ja7YhMNNSHmgDdVLL901oTNwYdHPKY6IoxSswJp1PLtXHcvZhqPzQZrSqNjWi06DKrWQ0d4zXsy2yTTnbUC611/etG9pmX7TloELKavGU2S3TTvkBbikv219WDoxJz/rU8n0gbemOQ4M5oHvy02qznWkpa7XW6RmcvvWp5W5/c9OWnS5t+ZF2moeG9uxTqNzfXeq2Us6MFlwD3QP5Nf/GX9/jvdIzJj6mreX4xLS/r07q470S/z5x1yMNtt+UyzVFrk7s4+p6JO/x3ugeyL33iHd6TCjF6xSu0QqMSfA3/lwdabN/SrF7uq1vferjayc8Dk1TGtGSdsp1Qa7N9WPBX7bXErX645dNeXwtdMXoQz0mbobKti362iqf1G1bj7lGC2ai/Y2xKm7WorXOFoa/TWYOwuZD3i32feMstXxftPpto2ZyzMHeCcapj4m/Lm1MIr5d2Fe+X6Mwx0Dv9JCN+40/QeTCrXczWf434pr2m4Oy+XAf+t1DwV8n3xZz9JXvg/4xEbFo1vnj1G1/VV6NiUhAeH3fdv3l10nZhvJbbE3c7xpWeKJlSP/WoZGWenzC2/Z9u7CvfG6a523ifgexwhMts9RqZ9S3Ds2Y2GvAZEz41iEcIe0DKAiMiYYx0TSiBY5GtCBEI1rgaERrCSBaAAAAADOBaAEAAADMBKIFAAAAMBOIFgAAAMBMIFoAAAAAM4FoAQAAAMwEogUAAAAwE4gWAAAAwEwgWgAAAAAzgWgBAAAAzASiBQAAADATiBYAAADATCBaAAAAADOBaAEAAADMBKIFAAAAMBOIFgAAAMBMIFoAAAAAM4FoAQAAAMwEogUAAAAwE4gWAAAAwEwgWgAAAAAzgWgBAAAAzASiBQAAADATiBYAAADATCBaAAAAADOBaAEAAADMBKIFAAAAMBOIFgAAAMBMIFoAAAAAM4FoAQAAAMwEogUAAAAwE4gWAAAAwEwgWgAAAAAzUYvWb3/728e///3vf0MIIYQQQq4mH3/88f8rRevBgwf/QgghhBBCrjYfffTRm88BAAAAwBw899z/B7ETxlWBHiIUAAAAAElFTkSuQmCC" alt="data-uri image">
</body>
`

const { window } = new JSDOM(content, {
  runScripts: 'dangerously',
})

window.close()

When calling window.close() on a page that contains data uri’s, I get the error message TypeError: openedRequest.abort is not a function at RequestManager.close (thrown at request-manager.js#L23-L28)

Issue Analytics

  • State:closed
  • Created 4 years ago
  • Reactions:4
  • Comments:6 (2 by maintainers)

github_iconTop GitHub Comments

4reactions
gagerncommented, Nov 14, 2019

I get the same error when writing my own ResourceLoader.fetch method:

"use strict";
const jsdom = require("jsdom");

const data = {
  "http://www.example.com/foo.css": Buffer.from([]),
  "http://www.example.com/foo.js": Buffer.from("window.close()", "utf8"),
};

class MyResourceLoader extends jsdom.ResourceLoader {
  fetch(url, options) {
    const promise = Promise.resolve(data[url]);
    // Enabling the following line fixes the problem:
    // if (typeof promise.abort === "undefined") promise.abort = function(){};
    return promise;
  }
}

new jsdom.JSDOM(`<html><head>
<script type="text/javascript" src="foo.js"></script>
<link rel="stylesheet" href="foo.css">
</head><body>Content</body></html>`, {
  url: "http://www.example.com/foo.html",
  runScripts: "dangerously",
  resources: new MyResourceLoader(),
});

I believe the problem here is that RequestManager.close assumes existence of an abort method even though the README.md only requires that

It must return a promise for a Node.js Buffer object, or return null

abort doesn’t seem to be part of the Promise API. So perhaps that call should be guarded behind a check if (typeof openedRequest.abort === "function") or some such.

Since the handler for the data protocol in ResourceLoader.fetch does use Promise.resolve as well, the original issue is essentially the same. But fixing this inside the ResourceLoader implementation, as the current draft of #2678 does, will not fix things for custom implementations like the one above.

3reactions
somewhatabstractcommented, Nov 25, 2019

I spotted that this is down to pending resource load promises still being around when JSDOM’s close() method is called. At that point, the resource loader API tries to abort any open requests by calling abort() on each one. However, since that’s not necessarily a call on every promise (it is on fetch requests made via superagent), it can result in this error.

I think adding a check for the abort method here will suffice, as per @gagern above.

https://github.com/jsdom/jsdom/blob/master/lib/jsdom/browser/resources/request-manager.js#L25

Read more comments on GitHub >

github_iconTop Results From Across the Web

Developers - "openedRequest.abort is not a function" in Window ...
... window.close(). When calling window.close() on a page that contains data uri's, I get the error message TypeError: openedRequest.abort is not a function...
Read more >
window.close() is not a function in electron What I am doing ...
mainWindow is a function, so you need to call it and inside the function also return the window:
Read more >
Contributing to JSDOM - Charper Bonaroo
.abort is not a function. Is openedRequest our fetch result? lib/jsdom/browser/resources/request-manager.js.
Read more >
JavaScript Window close method - Javatpoint
JavaScript provides an in-built function named close() to close the browser window that is opened by using window.open() method. Unlike the window.open() method...
Read more >
Oracle9i Database Error Messages - Oracle Help Center
conventions for writing code require that closing braces should appear on an ... If the problem is not resolved soon, the database will...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found