}
     }
 
+    private EventMetadata getMetadata(HttpServerExchange httpServerExchange) throws NoMetadataException {
+        String metadata = Optional.ofNullable(httpServerExchange.getRequestHeaders()
+                .get(METADATA_HEADER))
+                .map((HeaderValues headerValues) -> headerValues.get(0))
+                .orElseThrow(() -> new NoMetadataException("Metadata Not found"));
+        return metadataBuilder.fromJson(metadata, EventMetadata.class);
+    }
+
     /**
      * Receives inbound requests, verifies that required headers are valid
      * and passes an Event onto the eventReceiver.
                         .send(StatusCodes.SERVICE_UNAVAILABLE_STRING);
             } else {
                 try {
-                    String metadataAsString = Optional.of(httpServerExchange.getRequestHeaders()
-                            .get(METADATA_HEADER))
-                            .map((HeaderValues headerValues) -> headerValues.get(0))
-                            .orElseThrow(() -> new NoMetadataException("Metadata Not found"));
+
                     Map<String,String> mdc = MDC.getCopyOfContextMap();
-                    EventMetadata metadata = metadataBuilder.fromJson(metadataAsString, EventMetadata.class);
+                    EventMetadata metadata = getMetadata(httpServerExchange);
                     httpServerExchange.getRequestReceiver()
-                            .receiveFullString((callbackExchange, body) -> {
-                                httpServerExchange.dispatch(() -> eventReceiver.receive(new Event(callbackExchange, body, metadata, mdc)));
-                            });
+                            .receiveFullString((callbackExchange, body) ->
+                                httpServerExchange.dispatch(() -> eventReceiver.receive(new Event(callbackExchange, body, metadata, mdc)))
+                            );
                 } catch (NoMetadataException exception) {
                     logger.unwrap().info("Bad Request: no metadata found under '{}' header.", METADATA_HEADER, exception);
                     httpServerExchange.setStatusCode(StatusCodes.BAD_REQUEST)
 
 import io.undertow.io.Receiver;
 import io.undertow.io.Sender;
 import io.undertow.server.HttpServerExchange;
+import io.undertow.util.HeaderMap;
 import io.undertow.util.StatusCodes;
 import utils.LoggingUtils;
 
     public void testRequestInboundNoMetadata() throws Exception {
         HttpServerExchange httpServerExchange = mock(HttpServerExchange.class, RETURNS_DEEP_STUBS);
         Receiver receiver = mock(Receiver.class);
+        HeaderMap headers = mock(HeaderMap.class);
         when(httpServerExchange.getRequestReceiver()).thenReturn(receiver);
         when(httpServerExchange.setStatusCode(anyInt())).thenReturn(httpServerExchange);
+        when(httpServerExchange.getRequestHeaders()).thenReturn(headers);
+        when(headers.get(any(String.class))).thenReturn(null);
 
         doAnswer((Answer<Void>) invocationOnMock -> {
             Receiver.FullStringCallback callback = invocationOnMock.getArgument(0);