There doesn't seem any good reason for the framer to be async. It just takes a byte array, and carves it into individual messages. It doesn't do any i/o and it simply returns the messages, without itself doing anything with them.
Having it asynchronous precludes using it in any synchronous tools (which are much easier to debug with). But making it synchronous does not preclude using it in an async context.
There doesn't seem any good reason for the framer to be async. It just takes a byte array, and carves it into individual messages. It doesn't do any i/o and it simply returns the messages, without itself doing anything with them.
Having it asynchronous precludes using it in any synchronous tools (which are much easier to debug with). But making it synchronous does not preclude using it in an async context.