From 27817bed0ea4c8766cfd35e5a4617776b52ea89c Mon Sep 17 00:00:00 2001 From: Ovidiu Viorel Iepure Date: Mon, 21 Nov 2016 05:57:36 -0800 Subject: [PATCH] Logger API error handling improvement Summary: Defer Logger calls to the next tick queue so as to avoid potential Logger errors from falling under the purview of Promise error handling, which would degrade development experience by "swallowing" legitimate runtime errors within rejected promises, to the infuriation of us all :D Reviewed By: davidaurelio Differential Revision: D4197869 fbshipit-source-id: 10a44904be1404ad2534d06ddc56048c1c24f32b --- packager/react-packager/src/Server/index.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packager/react-packager/src/Server/index.js b/packager/react-packager/src/Server/index.js index 7fdcffa92..a704ae8be 100644 --- a/packager/react-packager/src/Server/index.js +++ b/packager/react-packager/src/Server/index.js @@ -475,7 +475,9 @@ class Server { // This is safe as the asset url contains a hash of the asset. res.setHeader('Cache-Control', 'max-age=31536000'); res.end(this._rangeRequestMiddleware(req, res, data, assetPath)); - print(log(createActionEndEntry(processingAssetRequestLogEntry)), ['asset']); + process.nextTick(() => { + print(log(createActionEndEntry(processingAssetRequestLogEntry)), ['asset']); + }); }, error => { console.error(error.stack); @@ -747,7 +749,9 @@ class Server { }).then( stack => { res.end(JSON.stringify({stack: stack})); - print(log(createActionEndEntry(symbolicatingLogEntry))); + process.nextTick(() => { + print(log(createActionEndEntry(symbolicatingLogEntry))); + }); }, error => { console.error(error.stack || error);