use previous Executor after delayed
Summary:
When `delayed` is called on the Future, the underlying `futures::sleep` call runs on a timer thread, and the resulting callback is called on the same thread. Therefore, in the following sequence:
f.via(&someExecutor).within(one_ms).then([&]() { /* [1] */ })
The code in [1] is not running in someExecutor. This can cause confusion by users of the library who expect the initial `via` to be sticky.
This change returns to the prior `Executor` after `delayed` is finished.
Reviewed By: yfeldblum
Differential Revision:
D3979179
fbshipit-source-id:
936ff5626e8ac377ffb15babf573349466984e3a