diff --git a/packages/react-dom/src/events/__tests__/DOMEventResponderSystem-test.internal.js b/packages/react-dom/src/events/__tests__/DOMEventResponderSystem-test.internal.js
index b8ef52edf08e9..367e55ed28d4d 100644
--- a/packages/react-dom/src/events/__tests__/DOMEventResponderSystem-test.internal.js
+++ b/packages/react-dom/src/events/__tests__/DOMEventResponderSystem-test.internal.js
@@ -256,4 +256,67 @@ describe('DOMEventResponderSystem', () => {
expect(eventLog).toEqual(['magic event fired', 'magicclick']);
});
+
+ it('async event dispatching works', () => {
+ let eventLog = [];
+ const buttonRef = React.createRef();
+
+ const LongPressEventComponent = createReactEventComponent(
+ ['click'],
+ (context, props) => {
+ const pressEvent = {
+ listener: props.onPress,
+ target: context.eventTarget,
+ type: 'press',
+ };
+ context.dispatchEvent(pressEvent, {discrete: true});
+
+ setTimeout(
+ () =>
+ context.withAsyncDispatching(() => {
+ if (props.onLongPress) {
+ const longPressEvent = {
+ listener: props.onLongPress,
+ target: context.eventTarget,
+ type: 'longpress',
+ };
+ context.dispatchEvent(longPressEvent, {discrete: true});
+ }
+
+ if (props.onLongPressChange) {
+ const longPressChangeEvent = {
+ listener: props.onLongPressChange,
+ target: context.eventTarget,
+ type: 'longpresschange',
+ };
+ context.dispatchEvent(longPressChangeEvent, {discrete: true});
+ }
+ }),
+ 500,
+ );
+ },
+ );
+
+ function log(msg) {
+ eventLog.push(msg);
+ }
+
+ const Test = () => (
+ log('press')}
+ onLongPress={() => log('longpress')}
+ onLongPressChange={() => log('longpresschange')}>
+
+
+ );
+
+ ReactDOM.render(, container);
+
+ // Clicking the button should trigger the event responder handleEvent()
+ let buttonElement = buttonRef.current;
+ dispatchClickEvent(buttonElement);
+ jest.runAllTimers();
+
+ expect(eventLog).toEqual(['press', 'longpress', 'longpresschange']);
+ });
});