Your terminology sounds fine to me! A promise chain itself is not blocking but in JavaScript the execution of function code is (unless you declare it 'async' which Espruino doesn't support - but all that does it effectively split the function into a bunch of smaller sync functions joined with promises).
So Espruino can only run one bit of code at a time (it's not pre-emptive), but by splitting the code up and calling the next bit of code from a promise/callback it can then interleave those smaller bits of code and make it seem multi-tasking.
So in your case as you noted I think maybe one part of the promise is just taking a long time to finish?
Espruino is a JavaScript interpreter for low-power Microcontrollers. This site is both a support community for Espruino and a place to share what you are working on.
Your terminology sounds fine to me! A promise chain itself is not blocking but in JavaScript the execution of function code is (unless you declare it 'async' which Espruino doesn't support - but all that does it effectively split the function into a bunch of smaller sync functions joined with promises).
So Espruino can only run one bit of code at a time (it's not pre-emptive), but by splitting the code up and calling the next bit of code from a promise/callback it can then interleave those smaller bits of code and make it seem multi-tasking.
So in your case as you noted I think maybe one part of the promise is just taking a long time to finish?