Игорь: Можно попробовать узнать где находятся разрывы строк, к примеру, посчитав ширину каждой буквы. Такая задача слишком сложна, и заслуживает отдельного вопроса.
Но вопрос, зачем это надо? Разрывы строк будут отличаться у разных пользователей, в зависимости от браузера и настроек системы. Если вы разобьёте строку «шла саша по<разрыв> шоссе», и вставите картинку в разрыв, то у другого пользователя будет «шла саша<разрыв> по шоссе» или даже «шла<разрыв> саша<разрыв> по<разрыв> шоссе»
Попробуйте отдебажить.
Самое простое — расставить console.log() по коду.
Более продвинуто — расставить брекпоинты в инструментах разработчика или фаербаге.
Теперь видно, у вас один и тот же код повторяется дважды, строчка в строчку. Лучше всего избегать любого дублирования, выносите его в отдельную функцию.
Сделайте подменю немного внахлест (поднимите на 1px)
Такое может происходить если, например, зумировать страницу. Тогда может образоваться пустое место из-за округления.
Больше плагинов не значит лучше. Во-первых, меньше модулей — меньше хлама.
Во-вторых многие вещи в gulp можно делать обычными npm-модулями, не оборачивая их в плагин.
Вы так или иначе все-равно используете колбеки, в этом примере, например, в setTimeout. Просто там же нужно будет добавить метод, который разрешает ваш промис.
В es6 конструкции языка позволяют писать асинхронный код в синхронном стиле. Ознакомится можно тут habrahabr.ru/post/210330