protected function receiveMessage()
    {
        if (empty($_POST)) {
            $_POST = $this->retrievePostWithInputStream();
        }

        $request = Request::createFromGlobals();

        try {
            $binding = (new BindingFactory())->getBindingByRequest($request);
        } catch (\Exception $e) {
            return null;
        }

        $context = new MessageContext();
        $binding->receive($request, $context);

        return $context;
    }