anchor.diff:      { noreply, State }.
   
   
  -handle_info( _Info, State ) ->
  -    { noreply, State }.
  +handle_info( { Msg, Tag }, State ) ->
  +    case orddict:find( Tag, State#state.asyncs ) of
  +        { ok, { Pid, Action } } ->
  +            Asyncs = orddict:erase( Tag, State#state.asyncs ),
  +            S1 = State#state{ asyncs = Asyncs },
  +            S2 = case Action of
  +                poll -> handle_poll( Msg, Pid, S1 );
  +                start -> handle_start( Msg, Pid, S1 );
  +                stop -> handle_stop( Msg, Pid, S1 )
  +            end,
  +            { noreply, S2 };
  +        error -> { noreply, State }
  +    end.
   
   
   terminate( _Reason, _State ) ->
  
positive.code:     , { events, Device#device.events }
      ].
  
  
  %% ===================================================================
  %% Tests
  
negative.code:         [ proplists:get_value( Field, Device ) || Device <- Devices ]
      end,
      [ { "device count", ?_assertEqual( DeviceCount, length( Result ) ) }
      , [ { "device pid", ?_assert( lists:member( DeviceId, DeviceIds ) ) }
          || DeviceId <- GetDeviceFields( pid, Result ) ]
      , [ { "driver name", ?_assertEqual( ?DRIVER_NAME, Driver ) } || Driver <- GetDeviceFields( driver, Result ) ]
      ].
  
  
  test_poll_device_event( _Pid ) ->
      Tag = make_ref(),
      meck:expect( lurch_dev, request_event_async,
                   fun( _, _ ) -> { ok, Tag } end ),
  