Make await exception safe
Summary: This fixes fibers::await to correctly handle exception thrown by user-passed lambda. Await still always waits for the promise to be fulfilled (if the promise was not moved out, it will be destroyed and thus auto-fulfilled with "promise not fulfilled" exception). However if user-passed lambda throws, promise result is ignored (even if exception) and exception thrown by lambda is re-thrown.
Reviewed By: pavlo-fb
Differential Revision:
D3303393
fbshipit-source-id:
c4ba01fde0e156cc88e5d07aaf763e3abe121d11