Fix race in worker-based executor result processing

When worker-based engine receives event it should first remove
request from cache and then call request.set_result. Otherwise,
another thread waiting the request to complete might schedule
another request with same uuid (e.g. reversion of failed task),
which will replace current request in cache and then will
be deleted, thus leading to engine hang.

Related-bug: #1297668
Change-Id: Icbbca58067ee22fe45c63e1f69d189ea56697d20