async function assertThrows(f, props) {
			try {
				await f();
			} catch (error) {
				for (const [key, value] of Object.entries(props)) {
					assert.deepStrictEqual(error[key], value, key);
				}
				return;
			}

			assert.fail("Function should throw an error, but not.");
		}
Verify thrown errors.
@param {() => Promise<any>} f The function to run and throw.
@param {Record<string, any>} props The properties to verify.
@returns {Promise<void>} void