cater for null ExecutionContext (i.e detached/transient)