<!DOCTYPE html>
	<html lang="pl" dir="ltr">
	<head>
		<meta charset="UTF-8">
		<title>Ehhhhhh</title>
	</head>
	<body>
		<script>
			Object.defineProperty( Worker.prototype, 'raiseEvent', {
				value( detail ) {
					const event = {
						type: 'event',
						name: 'mycustomevent',
						detail
					};
					this.postMessage( event );
				}
			} );

			const worker = new Worker( 'worker.js' );

			worker.raiseEvent( 'whatever' );
		</script>
	</body>
	</html>
self.addEventListener( 'message', ( { data: { type, name, detail } = {} } ) => {
	if ( type !== 'event' ) {
		return;
	}

	const event = new CustomEvent( name, {
		detail
	} );
	self.dispatchEvent( event );
} );

self.addEventListener( 'mycustomevent', console.log );