Bringing a pair of integers to equality This was inspired by a math problem I saw somewhere on the internet but do not remember where (UPDATE: The original problem was found on the math riddles subreddit with a proof provided that it is possible, also see this Math SE post), asking for a proof if the following process is possible for any arbitrary pair of integers (from what I remember, it was possible for any given pair):

Given a pair of integers, j and k, double one of them and add one to the other, resulting in a pair of new integers, i.e., (j, k) -> (j+1, k*2) or (j*2, k+1). Then repeat this process with those integers, with the objective of having the pair of integers be equal.

These given examples are not necessarily optimal but show how this process can be done on any integers, positive, negative or zero:

(2, 5) -&gt; (3, 10) -&gt; (6, 11) -&gt; (12, 12)

(5, 6) -&gt; (6, 12) -&gt; (7, 24) -&gt; (14, 25) -&gt; (28, 26) -&gt; (56, 27) -&gt; (112, 28) -&gt; (113, 56) -&gt; (226, 57) -&gt; (227, 114) -&gt; (228, 228)

(0, 2) -&gt; (1, 4) -&gt; (2, 5) -&gt; (3, 10) -&gt; (6, 11) -&gt; (12, 12)

(-4, 0) -&gt; (-3, 0) -&gt; (-2, 0) -&gt; (-1, 0) -&gt; (0, 0)

(3, -1) -&gt; (6, 0) -&gt; (12, 1) -&gt; (13, 2) -&gt; (14, 4) -&gt; (15, 8) -&gt; (16, 16)

(-4, -3) -&gt; (-8, -2) -&gt; (-16, -1) -&gt; (-32, 0) -&gt; (-31, 0) -&gt; ... -&gt; (0, 0)


Challenge

Create a program that given two integers, outputs the list of steps required to make those integers equal by repeatedly incrementing one and doubling the other

Specifications


The solution does not have to be optimal but it must solve in a finite number of steps for any arbitrary pair
Input must be two integers
Output may be any reasonable output that clearly denotes the resulting integers of each step, for example:


a string with two distinct delimiters (any symbol, whitespace, etc), one for each integer in a pair and one for each pair


e.g., input j, k: 2, 5 -> output: 3,10;6,11;12,12

a list of lists of integers


e.g. input j, k: 2, 5 -> output: [[3, 10], [6, 11], [12, 12]]


If the input is a pair of equal numbers, you may output anything as long as it's consistent with other nontrivial answers


for example


if input [2, 5] has output [[3, 10], [6, 11], [12, 12]], which does not include the input pair, then input [4, 4] should output nothing. 
if input [2, 5] has output [[2, 5], [3, 10], [6, 11], [12, 12]], which does include the input pair, then input [4, 4] should output [[4, 4]]. 


Standard IO methods apply and standard loopholes banned
This is code golf so shortest answer in bytes wins
JavaScript (ES6), 111 90 83 bytes

f=(a,b,p=q=[],u=[...p,[a,b]])=&gt;a-b?f(...(q=[[a*2,b+1,u],[a+1,b*2,u],...q]).pop()):u

Try it online!
Commented
f = (                       // f = recursive function taking:
  a, b,                     //   (a, b) = input integers
  p =                       //   p[] = current path
  q = [],                   //   q[] = queue
  u = [...p, [a, b]]        //   u[] = updated path with [a, b] appended to it
) =&gt;                        //
  a - b ?                   // if a is not yet equal to b:
    f(...                   //   recursive call, using spread syntax:
      (q = [                //     prepend the next 2 possible moves in the queue:
        [a * 2, b + 1, u],  //       a * 2, b + 1
        [a + 1, b * 2, u],  //       a + 1, b * 2
        ...q                //
      ]).pop()              //     use the move on the top of the queue
    )                       //   end of recursive call
  :                         // else:
    u                       //   success: return the (updated) path